
; Créer par monsieur Dieppedalle David.
; Première version (1.00.01) créer le 28/06/2019.

; Version (1.00.02) le 28/06/2019, corrections de fautes d'orthographes ainsi que quelques oublies et bugs et amélioration drastique de la vitesse de génération du code PB.
; Version (1.01.03) le 30/06/2019, corrections, les éléments (Items) dans le gadgets ComboBox sont maintenant pris en charge.
; Version (1.02.04) le 30/06/2019, corrections, les éléments (Items) dans les gadgets ListeBox et CheckedListBox sont maintenant pris en charge.
; Version (1.03.05) le 30/06/2019, corrections, les éléments (Items) dans le gadgets TreeGadget sont maintenant pris en charge.
; Version (1.04.06) le 02/07/2019, corrections, amélioration, les éléments (Items) dans le gadgets ListView, sont maintenant pris en charge.
; ATTENTION, si une colonne n'as pas de texte personnalisé, l'information est manquante dans le code et donc la colonne n'aura pas de texte !

; Version (1.04.07) le 02/07/2019, corrections, le texte des gadgets TexteBox et RichTextBox est maintenant pris en charge ATTENTION:
; Maximum 75 caractères (Impossible de faire plus), les guillemets ne sont pas pris en charge.

; Version (1.05.08) le 03/07/2019, Ajout de la langue Anglais, correction, amélioration.

; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

; Created by Mr. Dieppedalle David.
; First version (1.00.01) created on 28/06/2019.
; 
; Version (1.00.02) on 28/06/2019, spelling corrections As well As some forgetting And bugs And drastic improvement of the PB code generation speed.
; Version (1.01.03) on 30/06/2019, corrections, the elements (Items) in the ComboBox gadgets are now supported.
; Version (1.02.04) on 30/06/2019, corrections, items (Items) in the ListBox And CheckedListBox gadgets are now supported.
; Version (1.03.05) on 30/06/2019, corrections, Items in the TreeGadget gadgets are now supported.
; Version (1.04.06) on 02/07/2019, corrections, improvement, Items in the ListView gadgets, are now supported.
; ATTENTION, If a column does Not have a custom text, the information is missing in the code And therefore the column will Not have any text!
; 
; Version (1.04.07) on 02/07/2019, corrections, the text of the TextBox And RichTextBox gadgets is now supported CAUTION:
; Maximum 75 characters (Impossible To do more), quotation marks are Not supported.
; 
; Version (1.05.08) on 03/07/2019, Added English language, correction, improvement.

Global VersionProgramme$ = "1.05.08"

; Le code VB nettoyer.
Global NewList CodeVB.s()

; Le Nom des Gadgets VB dans l'ordre de lecture du code.
Global NewList NomGadgetsVB.s()

; Le Nom des Gadgets VB généré de façon Structuré.
Global NewList NomGadgetsReorganiserVB.s()

; Le Nom des Constantes PB généré de façon Structuré.
Global NewList ConstantePB.s()

; Le Code des Gadgets PB généré de façon Structuré.
Global NewList CodeGadgetsPB.s()

; Le Code PB généré.
Global NewList CodePB.s()

; Structure contenant toutes les informations des Gadgets du Code CodeVB.s().
Structure GadgetInformation
  
  NiveauHierarchique.i ; Le niveau hiérarchique du Gadget.
  X.i ; Position Horizontal.
  Y.i ; Position Vertical.
  Largeur.i ; Largeur.
  Hauteur.i ; Hauteur.
  Texte.s   ; Texte du Gadget.
  Type.s    ; Type du Gadget.
  List NomGadgetsEnfant.s() ; Gadgets Enfant.
  NomGadgetsSuivant.s[2]    ; Les deux prochain Gadget (Utile pour le SplitterGadget).
  
  List Commande.s() ; Les Commandes lié au Gadget.
  List CommentaireCommande.s() ; Les Commentaires associé aux Commandes.
  
  MenuItemType.s ; Le type de l'élément du menu, (titre, item, SubMenu), avec un prefix P pour menue principal et C pour menu contextuel.
  SeparateurItemType.s ; Le type de l'élément du Separateur (Menu, Barre d'outil) M pour menue et BO pour berre d'outils.
  
EndStructure

; Identité des Gadgets, La Clef est le Nom d'identifiant du Gadget.
Global NewMap Gadgets.GadgetInformation()

Global WindowX.i
Global WindowY.i
Global WindowWidth.i
Global WindowHeight.i
Global WindowFlags.i

Global CompresseCode.b
Global GenereCodeLigneVide.b
Global GenereCodeCommentaire.b
Global GenereCodeBoucleEvenement.b
Global GenereCodeEvenementMenu.b
Global GenereCodeEventTypeGadget.b
Global GenereCodeGetGadgetGadget.b
Global GenereCodeEvenementGadget.b
Global GenereCodeEvenementFenetre.b
Global GenereCodeGadget.b
Global GenereCodeEnumerationConstantes.b

Global Langage$
Global LangageChanger.b = #False

; Utile pour sauvegarder le menu parent l'or de l'identification des menus et leur objets.
Global MenuParent$ = ""

; Pour les titre du menu principal.
Global Premier.b = #True

; Le nombre de champs ajouter à la barre de Status.
Global IndexBarreStatus.i

; Le nombre de Colonne ajouter à la ListIconeGadget.
Global IndexColonneListView.i

; Le nom du Gadget ListBox pour l'ajout des éléments dedans.
Global NomListBox$ = ""

; Le nom du Gadget ListView pour l'ajout des éléments dedans.
Global NomListView$ = ""

; Le nom du Gadget ComboBox pour l'ajout des éléments dedans.
Global NomComboBox$ = ""

; Le nom du Gadget Treeview pour l'ajout des éléments dedans.
Global NomTreeView$ = ""

; -------------------------------------------------------------------------------------------------------------

; Le langage de l'interface.
Global Langage$ = "English"

; Génère le code d'énumération des constantes si #True.
Global GenereCodeEnumerationConstantes.b = #True

; Génère le code des gadgets si #True.
Global GenereCodeGadget.b = #True

; Génère le code des évènements de la fenêtre si #True.
Global GenereCodeEvenementFenetre.b = #True

; Génère le code des évènements des gadgets si #True.
Global GenereCodeEvenementGadget.b = #True

; Génère le code GetGadget des gadgets si #True.
Global GenereCodeGetGadgetGadget.b = #True

; Génère le code des EventType des gadgets si #True.
Global GenereCodeEventTypeGadget.b = #True

; Génère le code d'évènement des menus si #True.
Global GenereCodeEvenementMenu.b = #True

; Génère le code de la boucle d'évènements si #True.
Global GenereCodeBoucleEvenement.b = #True

; Génère le code des commentaires des commandes.
Global GenereCodeCommentaire.b = #True

; Génère le code des ligne vide pour aérer le code.
Global GenereCodeLigneVide.b = #True

; Dansifie un maximum le code.
Global CompresseCode.b = #True

UsePNGImageDecoder()

Enumeration 1
  
  #FenetreVBToPB
  #Menu
  #Menu_Ouvrir
  #Menu_Quitter
  #Menu_Preferences
  #MenuContextuelTree
  #MenuContextuelCode
  #MenuContextuelTreeOuvrirTous
  #MenuContextuelTreeFermerTous
  #MenuContextuelTreeConvertirCode
  #MenuContextuelCodeCopier
  #Menu_Aide
  #Menu_APropos
  #TreeGadget
  #PanelGadget
  #EditorGadgetInformation
  #EditorGadgetAvertissement
  #EditorGadgetErreur
  #EditorGadgetCode
  
  #FenetrePreferences
  #ButtonAnnulerPreferences
  #ButtonValiderPreferences
  #CheckBoxCompresseCode
  #CheckBoxGenereCodeLigneVide
  #CheckBoxGenereCodeCommentaire
  #CheckBoxGenereCodeBoucleEvenement
  #CheckBoxGenereCodeEvenementMenu
  #CheckBoxGenereCodeEventTypeGadget
  #CheckBoxGenereCodeGetGadgetGadget
  #CheckBoxGenereCodeEvenementGadget
  #CheckBoxGenereCodeEvenementFenetre
  #CheckBoxGenereCodeGadget
  #CheckBoxGenereCodeEnumerationConstantes
  #TexteInfoLanguage
  #ComboBoxLangage
  
EndEnumeration

;{ DataSection

DataSection
  Ouvrir_png_start:
  ; size : 1084 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$4D41670400000061
  Data.q $8A0537C8AF000041,$4343698D010000E9,$DA78000063636950,$071C5102483FD2AD,$FD92D610985DEFF0
  Data.q $5B10B073306E0821,$144C1B0A87502214,$E3CEC152F3CE25CB,$16D0934B734565DD,$7468A688A681FD0D
  Data.q $39C082208408684F,$E15EEF7AE425A102,$E3F79F71E0FD2D64,$BAC403DDFBF77EEE,$926696C01165EBAC
  Data.q $CE4ACF5B5A5462E4,$D0C5643B01C3F427,$1347C67A0AC48923,$5A3577B0CE3EBB02,$4C6C90E34D3C34E9
  Data.q $1170F7E3EDBFDC3D,$B702EED4DC10105A,$EA63BCCF3DC7398F,$6A79CA2959827526,$46BA8C64A927E0BA
  Data.q $DF71CE653EE0543D,$1D4EB67B02955730,$943A9DFA8D25F2D0,$D1532D5910050D57,$FEB0F6A13C47BD09
  Data.q $E81261607199A7F9,$04BAB8035973746B,$C9181C6F9CDDBCC6,$9ED57B5CDD737700,$7682E73630DA3089
  Data.q $B5658BC70145704A,$EB2CD4E808F380BD,$33C6B4173AB2DCF3,$8B9EFD526D94D750,$BE37BCF6BF818620
  Data.q $6FF7997A16C0FFE7,$400332025B380047,$81AFA6057E3800FC,$10C2A40831205BE1,$44C76567C59FAD43
  Data.q $BCD5364472972E4C,$4310AE52AC4B8EC4,$6BBAA61BFF151597,$2854A47BE8AB16F7,$2D2FD52E9E84529A
  Data.q $6102060A5FACCA6B,$E56B2A76CFB8017C,$4B6206000000448C,$FF00FF00FF004447,$0900000093A7BDA0
  Data.q $130B000073594870,$9C9A0001130B0000,$4170760900000018,$0000001000000067,$0000C3ADC65C0010
  Data.q $CB3854414449BC01,$07146144284BD395,$5643648310C663F0,$DB0A4ABC9482C513,$6F198C365148D921
  Data.q $2B12EE850D948933,$0914A058CD8F2365,$F18F0B6F28663CA3,$DFC686131E161158,$FD6E662334C19AF9
  Data.q $EFDDB9FF9DBDEEFA,$A610B0057DFD10EB,$3C92C9FF02CA10F4,$50DE68AB6A6A8535,$F3D7BE173A860B4F
  Data.q $2A94E11143405C5A,$64CBB71519FC650A,$95A7B0BEFC192E59,$3387AB76094E5F2E,$94CC98BCA12AD9C2
  Data.q $8D8E73DABA6852A0,$38C1F6A8E3479A23,$DB32E189D620FD5A,$DABF09B607E46CC5,$C9B59A839136F421
  Data.q $598363E046F7CF57,$49F61F376DE0ACDC,$AA410CC737B4DBC2,$80FAD80599D49022,$C70036C3FFD601A7
  Data.q $DE7BEC357DF61EB5,$06E72A5DD092975E,$F1A370256DC0091D,$9C6A1E74EE05AB76,$DA0DCD18DBD1CAAE
  Data.q $07CF3CE05C8B8062,$8E0449381D358039,$3843037104B521A3,$FBF01DBDE2C71870,$F146EC0B1FB01503
  Data.q $48DCE6325B0085C6,$8CD8028341EC49A9,$602858C258DC3600,$3581CEB039D6020E,$1740D13AA46EAE72
  Data.q $26C5C09301CB2C00,$4E81B899FFA25E7E,$D3F59B1CC0A3E034,$98EF642BBB18EB9C,$96446713F298DFE6
  Data.q $BC0AFD478BE5B24A,$88C8AD711F31B38E,$068D28A92983292C,$915A891F141E6AF5,$A88D740BC9AFD911
  Data.q $3D0B09FCE3DF47D2,$0000D8E4C5CBBE21,$6164745845742500,$74616572633A6574,$302D393030320065
  Data.q $3A35315433312D39,$32302B38353A3530,$001E04438830303A,$6474584574250000,$69646F6D3A657461
  Data.q $2D39303032007966,$35315433312D3930,$302B38353A35303A,$A2BC1EF930303A32,$444E454900000000
  Data.b $AE,$42,$60,$82
  Ouvrir_png_end:
EndDataSection

DataSection
  Copier_png_start:
  ; size : 3117 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061
  Data.q $0B0000130B000073,$0000189C9A000113,$6850504343694F0A,$20706F68736F746F,$666F727020434349
  Data.q $9DDA780000656C69,$F73D16E953546753,$4B9480884B42F4DE,$8B4252200815526F,$1009212A26911480
  Data.q $C15115D9A121884A,$88A0C81B04454511,$2C51158C808E8E03,$A221E407D80A8A0C,$E1FBCA8A88A3838E
  Data.q $CDE6F7BCD66BA37B,$9DF3ACE73ED7B5FE,$48960C08C007CFB3,$1E42A90C80355133,$E4E1C6C4C783E011
  Data.q $100070240A81402E,$0123FD732164B308,$C0222B3C3C7EF800,$080BD3780100BE07,$871C30C09B4DC000
  Data.q $80015C9942EA0FFF,$084B389174C00184,$A6428E7A40001480,$26989D8001464000,$63CB600004A00053
  Data.q $2760002D5000E362,$99F89D8000D3E67F,$011521945B00017B,$44886513200091A0,$8A56CFAC003B6800
  Data.q $4B66140030580045,$4930002DD80039C4,$C000B7B000486657,$000C0800B20B10CE,$7B04002985885130
  Data.q $8400782323C86000,$F13C57F246140099,$7800002AE710AE2B,$81453924B93CB299,$2E575707712D085B
  Data.q $36142B1749CE281E,$79C22E409A610261,$F3E00F3481321999,$E0111591A00000CC,$CEAE0ECE78FDF383
  Data.q $EA2D5F0EB68E36CE,$FEE3626222FF06BF,$E100004070ABCFE5,$1AB32F2CFED17E74,$25A2FE6D80063B80
  Data.q $F775A00B5E6804EE,$A000B5400FB2668B,$3C7EF870F357DAE9,$E5D9D9B990A1453C,$615B42C44AD8E4E4
  Data.q $C05FC267FE7D57CA,$F7FC3C7EF96CFD57,$5D328124E2BEE0F5,$F4CCC2E0F8044781,$62840992CF1CA54C
  Data.q $FF0BB7FC478FE6DC,$B96249C422D31DFC,$8E711251E3142A58,$8922A532F38C9A44,$64FFD225C5299242
  Data.q $35DF3E03FB2CDFE2,$2D917B013E6AB000,$10274BF603635DA8,$F20000F7E2C07458,$80030828D4C16FBB
  Data.q $3FEFFF77CFE18368,$4966800025A047FD,$2E24445E00007192,$000008C73FB3CA54,$F41B41B02A81A044
  Data.q $05C11C06C02C18C1,$42843660FC0BC1DC,$640A421042C2C424,$4282AC2960721C80,$2F602A1DB0CD8628
  Data.q $866851C0341D40D4,$0EB855C22E0E7093,$C19E0861FA0F703D,$08C841040981BC28,$8A620188DA216113
  Data.q $F8859917088E2358,$20248B120448C121,$35914B22511488C9,$485520548A523148,$5C873902723DF21D
  Data.q $823200C83B91BA46,$B281943147BC86FC,$A8B943B50CD43D51,$64D00BA246841A37,$D09BA0168F9A3174
  Data.q $E7A1368C3D1AB472,$433E8FDA0F68ABD0,$C4330718E8C030C7,$38B142C3C62E306C,$AC22B1CB6393092C
  Data.q $03AC56B01AC6AB0C,$0477B1CF63F589BB,$77043609C0458112,$4C5848411E612042,$241C20A848D84E58
  Data.q $8403093709DA1134,$B44BA8932227C251,$326218C4F911BA26,$12D6232C48588731,$C443887B102F138F
  Data.q $B927324389122437,$12D254A4B1490290,$2CE923526ED246D2,$C993231A48349BA9,$2C943907B26B64DA
  Data.q $C3E49DE485C82B20,$5BF221E41BE433E4,$53F8A47140629D0A,$E5194A6ACA5228E2,$32986506E534E510
  Data.q $A1A8DD529AA35541,$A1AD425A8F351154,$3413A88751AF52B6,$4B491683CD399A75,$17681AD395A2ADA5
  Data.q $11BA74E8AF69F768,$D257D0974E1E95DD,$F403E897E847E9CB,$88C78315860D0C77,$671807189B192867
  Data.q $19A64C98AF187719,$31373054C7198BD3,$556F990F99E798EB,$CA91157C2AB62A58,$2A1B9526954A950A
  Data.q $AADEAAA6AAA9542F,$A98F54CB55F3550B,$53335546AE7D535E,$AA55AB96D409A9E3,$A967531B53EB509D
  Data.q $546FA867AA87A83B,$590689FD597EA43F,$A051A4434FC34CC3,$630B20C6BCE35FB1,$AB0D6B212C78B319
  Data.q $CDB126C435817586,$1DFD98BB2A767CD9,$4339A1A9AA3D8BBB,$94F352B357334A33,$9CF87198E3073F66
  Data.q $F397A728E7094E74,$29E229EF14DE8A7E,$5C6531B94C34A61B,$48AB58969796AA6B,$AE36BDEB47AB51AB
  Data.q $59BB45BDA69DA7ED,$5C274AC7410E81FB,$E79D05CE8F674727,$16A70AA7DD53D953,$6BAA2EAEF53A3D4D
  Data.q $6EBF7744BBA11BA5,$9E805EBE9E98EEA7,$FAE7BD79DEA76F4C,$FA6DFD54FD2F7D1C,$0CB306580C47F5A7
  Data.q $C53C18CE0CDB0624,$DBC72F1D3C6F7135,$A54340C35D4351F1,$B99184E197619561,$0F468D46D5A33CD1
  Data.q $6DE324E35CC6698C,$21260626A3C66DC6,$529AEE4DEA4D4B26,$3B4C3BA629A6B94D,$D6CDA2CDCCCDC74C
  Data.q $E732D7313D9B3599,$60B7DF9BD79BE79B,$B8B6A8B62C5A785A,$EE59A65AE4B24965,$A559395A856EBCB6
  Data.q $9DAD46B35D5A5558,$11A7BBADBBD625AD,$D69EAB4E934EB9A7,$A9B6C9B6F1B0C367,$AEDB06D8E5B019B7
  Data.q $176267617DB66DB6,$BD93EEC3AEC5B767,$073DFD8D7DBA7D93,$1D5A1DAB0ED9870D,$3A563A1472B4737E
  Data.q $C57D3FEE9CCE9ADE,$10CF58672FE996F4,$29CB13B6E333D8CF,$6747D39B539D69C4,$8B88F38373B96717
  Data.q $2E3E972ECB824B89,$4AE4BDC8DDC61B9B,$F5D27AE15D71F574,$DBA8EDC29BB39B9D,$DC87EE69EE36EEAF
  Data.q $33599E299F34CC9F,$E551E043C8C3D073,$DF6B30959F0B3FD1,$B567814F434F7EAC,$AD57912F632F23E7
  Data.q $61F7AA77A5B7B0D7,$E39F723EF63E17EF,$59DE32DE373CE33E,$CBB7C8B7C037CC5F,$43DF855F9E6FC34F
  Data.q $D1FF7AFF64FF237F,$890367012580A700,$7AF8FB025B814181,$65DB3A3F8EBF217C,$B9A08C41EDD9B2F6
  Data.q $E582AD828F411541,$AD90ECC86821ADC1,$69CE91CE98E7F721,$07D0D6E87E50850E,$270C7EC38B61E661
  Data.q $708E3F8657858785,$77359731D11A5888,$44FA44DF7343DCD1,$394F31679BDE4496,$2EAA3E2A354A2DAF
  Data.q $3FBA34BA37DA3C6A,$9D58D5CC59662EC6,$2A2E391C4B6C4958,$EDFCDFBE6C6E36AE,$7BE30BE29DE287F3
  Data.q $A179705DC82F9817,$2EA916A785F4C2CE,$4E884C40963A2C12,$16A82A1041F09438,$0A8E257713F2258C
  Data.q $D12F2267C21DC279,$1E2A5C43D888D136,$EC927A4D2A48F24E,$A533C5247935BC91,$BC90A92784B9E52C
  Data.q $169E3A9BDD4C0D4C,$BD3A3D326D20769A,$AA42719091928331,$E667EA67B6934D21,$FEB28565ACCB7666
  Data.q $07951E2FB78B6EC5,$2D5905AC90B36BC9,$285A54E8A642B60A,$66576567B2072AD7,$9EAB9639CA89CDBF
  Data.q $90DBCAB3CCEDCD2B,$C212EDFF9FEF9C37,$574B86A5B692E112,$396AACBDE6581D2D,$15E30ADB79713CB2
  Data.q $B83CAC0656862B05,$EDAB4FD56D2AB68A,$4D7A26BD7EAE9757,$B5C182CAC15E816B,$85E50A550BEB6B01
  Data.q $584F5DEDD7DCEB7D,$9D86FA61B5DF592F,$DB14AE8A89153E1B,$78DC28D87F159717,$DC99BFCA6F871BE5
  Data.q $CF64B9C4ABA9B494,$9E2DDEE6E966D266,$0E97E697AA960E5B,$56DF0DB4DAD90D6E,$972FDB45F6F5EDB4
  Data.q $B943B683BBDB28CD,$C9A765BCB83CBFA3,$F454A4543F3BCDCE,$B5DDD2EE3654FA54,$7B1BEED16EF8D761
  Data.q $BC5BDBD5EC34F6BC,$0155DBBEC93EFDF7,$49FB65D566D54D55,$E9AA89AE3FF7B3FB,$6D4EAD5D6DFB96F8
  Data.q $07FD03D203C7ED71,$1DD5D4B9D7B60E23,$EB2BD68F52543DD2,$EF9DFEBE1FC70E47,$9C8D550D360D2D77
  Data.q $E9E479447023E2C6,$DA3A0D1EF7DF09F7,$1FD307E1AC7B8C76,$9A426A2F1D671D76,$5BFB9A539B469AF2
  Data.q $D6D13ECC4FBA5B62,$0F1FDB47FC7ADEEA,$54F34A79593C349C,$6793D382E9DA69C9,$7E7D9D959D8CCFF2
  Data.q $7BB6A2DB60DCF92E,$EF6F0F6ADFCE63E7,$8BFF45D2E17410BA,$B8F25CCE3BBC3BE7,$B85713E5DBB2F274
  Data.q $74EA6D5F3AAF9A57,$BBC74FD393FE3CEA,$B96B5CB9AE9ABB9C,$E9F7667BB5BD7AEE,$79BDF4DDCE379E1B
  Data.q $3D399ED5D6FF16F1,$F7C5F76F7AF3BDDD,$FD27727EDD16DFF5,$ADEE2777D9BBCBCE,$41ED40F45FBC4FBC
  Data.q $FE5B3FD587DD43D9,$77C06A7FDCEFD8DC,$8506F747DCD1F3A0,$430F8FF591FECF83,$860D86CB8F998F05
  Data.q $3FE239393E389EEB,$64CF43A7FCE9FD72,$CBFEA2FE179E26CF,$EBD5F87E2F1617AE,$F297A1D198D1CED7
  Data.q $EAFDA57C6DBF9397,$C6C2C6DBAF19EBC0,$F45E313378C9BE1E,$1D77DC77C1EDFB56,$207CE44F0FDFA3EF
  Data.q $53F5B1F968FF287F,$FF93931993FBA7D0,$2D3363FCF3980304,$4D416704000000DB,$51FB7C8EB1000041
  Data.q $5248632000000093,$800000257A00004D,$800000FFF9000083,$EA000030750000E9,$170000983A000060
  Data.q $01000046C55F926F,$7CDA785441444948,$27441030C2AE3193,$8470B4445150D38E,$72826E13705003FC
  Data.q $29B0470B47426E13,$7671C5174A409090,$88B696093628E57E,$B09233AD59BF3F1C,$3E70E00EEBCB12D6
  Data.q $124BBDF4E9D39B9F,$112C3088A49218C6,$7318D27CF9F088A1,$053D2D2249ACC633,$73CF3C11920B6DB5
  Data.q $5FC005FDEF2BAD68,$030C30008FC2A02A,$6D07CF9F58F7EFDE,$F6B595000F7BC2DB,$F4023D75D75DAD66
  Data.q $B2C8920B76EDE85C,$3959205EBD79346C,$89A000F1E3C72EE7,$40A28AA1DFA5420C,$4B801556AD589659
  Data.q $A6AC20F69C1E9064,$592052943DF7D069,$76001879F9110045,$E3C7852942481DBB,$29ED598618713711
  Data.q $ED9E5D08034F696C,$7DF40238C1333A43,$C9A938D99110920F,$D6B414A50739C017,$D008E443DBB99C51
  Data.q $D8F7BC2BD7AE1D75,$3C8841A99A5F366C,$FB9CBE367DFBF602,$738053483A73419D,$6628A29C4312796E
  Data.q $CE2101BFE79E669F,$01FF8000D9A5D6F4,$124AF49765728600,$4E454900000000B6
  Data.b $44,$AE,$42,$60,$82
  Copier_png_end:
EndDataSection

DataSection
  A_Propos_png_start:
  ; size : 917 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$474B620600000061
  Data.q $A0FF00FF00FF0044,$700900000093A7BD,$00D00E0000735948,$C399C22301D00E00,$6741707609000000
  Data.q $1000000010000000,$020000C3ADC65C00,$A5CB3854414449BE,$60061050D36ED9D3,$79A2DE448003C3DF
  Data.q $45A2EC37A22DC434,$3410AE0555625448,$AD90AD942968525D,$E34B3893AE349371,$A9C766CD789DB126
  Data.q $9F4B1EE22A3133FD,$3323339F7E796C8E,$B902FF13F15EFFCC,$8D91F86CDAFF2242,$8AB591FAAF591FBA
  Data.q $406295910423791F,$5E570155E445682B,$89348370167170E7,$58A8962A258A8E74,$FDA5F656297D135A
  Data.q $60ABE9139A252B86,$9BB65FB4A1E57B48,$95D31BC4CF37BC5B,$0D879ACDB9C3DD78,$61E4AC43C57AC3D1
  Data.q $D159229F8EF0F055,$F3EC44E0FC0DD5C0,$15DD17DE36A5B22A,$E10DB55CB3ACA766,$89CCFC1B66E387B4
  Data.q $A1415D51C143628A,$14EF4471955F2326,$16E5F216C48E36C4,$ECCB11B99B0752B8,$207C08DA67B63455
  Data.q $F53A636D18206F18,$19C703AEB85C4DE1,$30621C34611A3C63,$A82DB7D1B7DFA3E8,$CB9F32C27E5D8DBA
  Data.q $0219FEF86C35DB1A,$8A64EE156B0219F3,$E5CA1F3E7C8AB56A,$C871C7043C3C3872,$B761E9D4BDE1B366
  Data.q $BAAAC6B1EECCB1E8,$7255C9C11F33B389,$D3A4041041EB8E1D,$52A54D7099326469,$AB66B3D9A1932648
  Data.q $1AF23E6594C29D8B,$7EA0839EA62668AB,$D30C7713117D7E0F,$50AAEDD176EBD030,$74659640A2AA0555
  Data.q $B4721F13543F9D3A,$2606BB958D23ED83,$1F7699083389E674,$BE8543DDB1068EB5,$7D4986E854B62334
  Data.q $38B6367A507D8418,$53AA8ED8D790F80A,$AA9CAA13986A5CC3,$1602CFC3C45DBDB8,$2A0CB1F31E1DDDC8
  Data.q $720B2CB0FB8A890D,$350EB60280FC42D7,$D0EDD4C67068ADB6,$4780BC7CC1492508,$0948522EFA58CB5F
  Data.q $0134276A101256D7,$0CCD85823A4C029B,$147B92DB1AB3C405,$C6D4A2430D71A230,$2B7025ACEE248DFD
  Data.q $FAC1E27F57370BF6,$65968470D3A4344F,$0EC631A00A4C0ED0,$D1D94432CD5C85AC,$D439BE7476D21D2B
  Data.q $EA50B4169EBACA0F,$03EB17AE8233D358,$73A06362F50C6F9D,$CB322E989B78D0E2,$997B982A72D2E0E9
  Data.q $FBE7D1057E2FA208,$F67D11DFAD98BD08,$87B27D105FA7D10D,$35FEEF1F4427D2E8,$751BFCDFF7FF2E47
  Data.q $008DF91E88C1F83F,$6474584574250000,$616572633A657461,$2D39303032006574,$37315433312D3930
  Data.q $302B32333A35303A,$9CE7008A30303A32,$7458457425000000,$646F6D3A65746164,$3930303200796669
  Data.q $315433312D39302D,$2B32333A35303A37,$5F5DFB30303A3230,$4E45490000000020
  Data.b $44,$AE,$42,$60,$82
  A_Propos_png_end:
EndDataSection

DataSection
  Information_png_start:
  ; size : 770 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$0F0000000F000000,$95D63B0000000608,$474B62060000004A
  Data.q $A0FF00FF00FF0044,$700900000093A7BD,$00C30E0000735948,$64A86FC701C30E00,$454D497407000000
  Data.q $AF32250B1006E307,$498F020000350F2C,$4F9365CF28544144,$F7BFBFC718719348,$4CDA6DADBA9B739D
  Data.q $E3FB123345DAD48B,$79208A946B0924BF,$43C087560C1D90F4,$21E0E88947905420,$EC79444A0EA10C0A
  Data.q $AC9B4D13132B5992,$8FEEF73A89C57934,$FB4E9B074F7FDEEF,$3CF2E7EF9E7973C2,$1B5D22F0109187DF
  Data.q $16F0640E9FFBB9AE,$73424F7DC851C278,$B9CEDFFDC79E6667,$303B656E92382EE1,$1ECCA6C717DDFA63
  Data.q $3866793B8B3D5F54,$27A6C0446599C119,$38A1D6C657AD8AFB,$0073B2983647C123,$A97F3CB4BC042400
  Data.q $4AAF514F5FF29DAE,$10242926B4C84ABB,$1DB55F24FFAE9111,$424950FE9A36E6AE,$3598EBDE02120BC0
  Data.q $2A291C698D467CDD,$8786EA20FDE1A18D,$B821F77EA9FC5548,$B416A27050B6F761,$75221E77F2855B34
  Data.q $978E94449D261D30,$DDB5F5D232DBE8E1,$79C3D47634704481,$4C53D01AB3685D18,$23DD0A46344B24FB
  Data.q $68844AAA69D91B5D,$DAD8380BCBEBE88B,$0B7043CAE0C00DC1,$3E19AB1F08BEB4FB,$DBA369A1C7062ACD
  Data.q $2A470934508CE54B,$4919139C396AA0DA,$D7A25DD87EDA5C07,$35783E449144B443,$B331844807830DB2
  Data.q $69A4C46E70AE9C08,$583343D9410164CE,$D981225BC825C721,$89E871A906539DFE,$C95FDFCE268DE0DF
  Data.q $330BDA400ED17D33,$C06B2EA8872AA23B,$66A9015C96800071,$7838C0CE0579BD4C,$685858C908F395AF
  Data.q $A951821645376749,$400034FC02D52642,$00A869AC1920884E,$9E50CA060E7E0BAB,$F3E804974F306F36
  Data.q $B22D863F0BEED829,$01BF9D1861292C84,$A0B3A26A7298044D,$BE30FCFA22A2F606,$91D586EDE021309D
  Data.q $648847872413E28F,$6A42B9B4AB263922,$842128BFAB629178,$DC1FDB0A2962FFA9,$B37AAA5849DAEF06
  Data.q $1AC28CD5B1AB84E1,$FF144396923EFC12,$72519AB40FBE83F3,$52B8165BCEA68E19,$D982670557DFF67E
  Data.q $7006B2C2F12C7BE7,$27B3C2C454805C86,$20761C9C9C7CBE37,$FEDE02FF594EEDD7,$0000D6BA02AA0C9B
  Data.q $42AE444E45490000
  Data.b $60,$82
  Information_png_end:
EndDataSection

DataSection
  Avertissement_png_start:
  ; size : 744 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$0F00000010000000,$4F73ED0000000608,$474B62060000002F
  Data.q $A0FF00FF00FF0044,$700900000093A7BD,$00C30E0000735948,$64A86FC701C30E00,$454D497407000000
  Data.q $3B01260B1006E307,$4975020000E03DD1,$4FD18DCF28544144,$FBEFF1C700015348,$72D8DD4B6DA7BDB3
  Data.q $3FA1024B4B1A65AB,$98EA084952354598,$912743CA5D4F7F44,$4414553A0A288A08,$504145109512E7F4
  Data.q $59CCD854464BAA5D,$3DEDEE96DB323260,$FF44483AF7B6F7B7,$E09F877E7C7F9DFB,$DD7768BBF23786A4
  Data.q $7E3F62A29F67AD45,$F0EF6BA6704B9A85,$EA94A43F9135CFE4,$5A3B1A5AC544A799,$494938D2192C75FC
  Data.q $6E33B8DF300FFEB7,$4DFC9643135811B6,$175BBE2A5DAB6AAB,$0C6EEA980FFEEA5A,$F994A0C470AFCC35
  Data.q $1EB65A5883BDEF78,$07CC06FF039E43E9,$D2CB6849D1A6F2B3,$28AE1B995FAFA74B,$ABE9DAD67A98389C
  Data.q $FEB98B1C6F445C10,$465644F5AFED8C0E,$86C0B049BB5CBD11,$3979A640D197FDC5,$5BC6033F91C098CA
  Data.q $83AAEC11766CA677,$6BB3F115E3966B34,$64745ADB4CA07317,$B207BFB2C5CE07EA,$47B200A686FEA23B
  Data.q $A709FA08DB5A1182,$7EBCB8EB29B81DE3,$F4733E8F5C42E175,$93B662D9AA49C057,$D654A3028C1886D0
  Data.q $E4022AD426060B30,$48E38EAF4F4D604B,$3023F77FAFF4AD2A,$0B7178A226A0B7D9,$787CAA27F605783E
  Data.q $062F191437DF3557,$8489CFB0EA9C3390,$4A077E0EA44A9D71,$45644ED17D933509,$8B06D2087E410C23
  Data.q $FD05342BF9CF45EA,$EB980BC17D601828,$3E80DA1366E229DA,$73136655CEF44C03,$80BE640DED105294
  Data.q $7A7B5B6CBD5F2A5C,$22602540A6DCEE91,$30776AD14239135A,$E4916EF754FC7A88,$57C7AB707260CCE1
  Data.q $66013E30A3F211E9,$BE445ECE91D14289,$88D38FBE7ABB6F73,$E58BA65E1CE50380,$B43A4F33A6B21B78
  Data.q $91E3DE93FCF23C69,$C594CA98D690A52D,$70AA841A98E3ACA9,$E8347D23FECBFA02,$9F21E46093B3F33A
  Data.q $042A4CB0405924B1,$CDF1A7EBE761E467,$8666042CB4EC124F,$B06DB04006490010,$0849F76F84AF99ED
  Data.q $8CEEC4A12BF24DA2,$00000000EA97DBAB,$826042AE444E4549
  Avertissement_png_end:
EndDataSection

DataSection
  Erreur_png_start:
  ; size : 736 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$0E0000000E000000,$2D481F0000000608,$474B6206000000D1
  Data.q $A0FF00FF00FF0044,$700900000093A7BD,$00C30E0000735948,$64A86FC701C30E00,$454D497407000000
  Data.q $B526250B1006E307,$496D02000048DBF6,$CB9255CF28544144,$31F77FC50061544B,$0293578D5A39368E
  Data.q $5664A91F054A18AD,$556821088D493B46,$51681FE8B85C83D8,$0544811684C2D050,$B02222A1D083AD65
  Data.q $547C73795138A087,$DD79DCCCE3A56A53,$B3AB3C34C2D7DF3B,$66C3228E0703BF38,$DFA043C8F17AAB2B
  Data.q $665149165AFE10BB,$413762D98D1CB44B,$A8B5EEF6844F676F,$AF63CB1976F606B2,$7E15ED8F97740AEA
  Data.q $19199DA4E93F728C,$EE60EDFF409532FA,$07FC531DCB70F1F1,$4F61D5F46B0CBB7B,$F5C9EA5AAA2AC1D5
  Data.q $2DE9F0738B0E3240,$4E7F0F18B930CDCC,$E991FFBAE42FE332,$DE9F966A8B6B9768,$D1E348D03CAFCA6D
  Data.q $24F0845B101A14BD,$79169214560EFAFC,$532D8DE4D84DED22,$F7E813A43A34BD5C,$2116B9A2A56CA9E6
  Data.q $ABFDEA0039CEC711,$40122BAE88E5A50A,$8254D14DC374D41C,$BE8BB46BAF2781DA,$7D780D359DDEE3E5
  Data.q $DCA4A73F28D264A5,$023BAC843EAC80DD,$51BE089292EB7A80,$D2C51E32812C072D,$88BBA54D8CCA2923
  Data.q $1AA6B8D4C0CEC045,$9F50015DBFB16CDB,$90129EAF71FB480D,$D4A9242CF0BA3601,$B2B28A013246896D
  Data.q $C453B2ABF15E9329,$6094805A42C890B2,$91F9D98D1CD5B839,$E6821C2007DE7197,$EB45235B6A68ACF6
  Data.q $0084BBCB53736569,$D48496C70A5CC247,$CA48A58670C13762,$0049AFE711C78AC6,$063184F537C342F5
  Data.q $A295894BA8BC6E20,$EDEEB0CE8F592889,$4A10FCDF6FC489EC,$5D34FBAB145CF862,$7AE9E5033CA08E00
  Data.q $C138A31F40AE470D,$EF69501076A79328,$E9E99B0FC1E0D2A6,$1510392C0E4B8B14,$96279F3D07596560
  Data.q $BB592CD063AFA6EB,$6CE059BFAFD2799C,$8BBE4145C0AEA48E,$60D92889A6DFF20D,$6682F77D375CC994
  Data.q $19FCCF7A0157FD78,$90BCD18CC6BAF278,$479092DB7072D2A4,$B3418E811B6DB867,$D62BDC4C17FA3564
  Data.q $000000008E226322,$826042AE444E4549
  Erreur_png_end:
EndDataSection

DataSection
  Ouvrir_tous_png_start:
  ; size : 149 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$4144495C00000061
  Data.q $3FFFFFF8639C7854,$800370CD22982503,$0D4D01A9C63A3FE0,$4B86383E49FFF05C,$7C00C316A6143162
  Data.q $7F41017563E6402E,$98A6C00DD512F3E2,$D2206F0032E02F24,$12545F00C30405C5,$220714074954881D
  Data.q $030F8894E4826931,$BD3612B17AA78200,$4E454900000000AF
  Data.b $44,$AE,$42,$60,$82
  Ouvrir_tous_png_end:
EndDataSection

DataSection
  Fermer_tous_png_start:
  ; size : 150 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$4144495D00000061
  Data.q $3FFFFFF8639C7854,$800370CD22982503,$0D4D01A9C63A3FE0,$4B86383E49FFF05C,$7C00C316A6143162
  Data.q $7F41017563E6402E,$98A6C00DD512F3E2,$4881BC030BE02F68,$A05E42440A492028,$200CF8881B680C38
  Data.q $3E2252B262C48818,$2E49B17A4F6A000C,$4549000000006A47
  Data.b $4E,$44,$AE,$42,$60,$82
  Fermer_tous_png_end:
EndDataSection

DataSection
  sourceicone910116_png_start:
  ; size : 989 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$4D41670400000061
  Data.q $8A0537C8AF000041,$474B6206000000E9,$A0FF00FF00FF0044,$700900000093A7BD,$0048000000735948
  Data.q $3E6BC94600480000,$6741707609000000,$1000000010000000,$020000C3ADC65C00,$85CB3854414449D1
  Data.q $878514611B4B4D93,$07FA14DD3706FE96,$7F8A09DC56EB74DC,$45534A8222C510A1,$D8AA8537461056AD
  Data.q $6D9755C56C150880,$2499893269F2548C,$F264CF99332664CE,$286FBD3C55D29261,$7DC330EF2E2E771D
  Data.q $2D2D2DC3BEE739EE,$B7B7B7CF33333371,$D9D9D9BEEEEEEF5F,$535302363636B479,$000E391717172F53
  Data.q $FBACB2D6FC7C7C77,$ACFAD5AB5F7EBD7A,$6DB7D38E3BEDD75C,$7E8C30DF669A6FBB,$B0952A5F75655AB5
  Data.q $0327B8E391F2B2B2,$45104D4F39F9F9C0,$DD0F5EBD03468D11,$9B3668777777176E,$A36EDDA0E9D3B383
  Data.q $FCDCDCD8E0816AD5,$19D9D9C003678046,$596418F1E23AEBAF,$255321972E509B02,$3CC1FFB474D02952
  Data.q $D7FAFAFAC2A903CF,$347D9E53D3D380FF,$2EECD03FAC50DFDC,$C53A02857A0A951A,$91E155430CB25A22
  Data.q $55D5D584B209B24A,$398933C27272701F,$81D2BC87BE688BA9,$7D73A28D17A34E9B,$47859B3B072E568D
  Data.q $CBCB452555521CEF,$A6B2F0BE5F000FCB,$0C2CC5240FE5FBE0,$B4794DA2AD5986CB,$66BBE47B26937248
  Data.q $060C1BB33A69B059,$511B3C37816D007D,$9090424149488CA5,$141451412492EF22,$FCC1B254364C86C9
  Data.q $3A380FBF5A069A6B,$E02E58475715E23A,$140A073562A2AC97,$9D1A009972485402,$6167CA15F924D9EC
  Data.q $EEBE21428407C161,$92157484264B103A,$343162B40411C068,$C569709797D861C2,$E7E6A854C2C16536
  Data.q $D75E67E1E1C07DE7,$4871721471F3E464,$3593A3C05C5D28D4,$CC5520D93656B4C9,$380F9CDCDCF15B3F
  Data.q $A8A240DB0DE03FD8,$281424A588A82222,$5F62525C0DCDDAFD,$EDDA54980DA2C15D,$07D6767663CA242D
  Data.q $728F3166F3EFEDEC,$E116259D5A6427F8,$A04893A351A8F3E6,$2416741CA5424C94,$03F4F4F4C825BF4D
  Data.q $AA48CA325E3DA7C0,$50E1B1C704BD4402,$3A49D7498CAD16DA,$204033FCC7859E4B,$3BDADADAF2AFF010
  Data.q $0FFD8F3748A02321,$7974B3DE473D2437,$F9269064C990B204,$60891237AD8B64D7,$C8DCA78044327272
  Data.q $7C62FC3C3C3708C8,$262626B72F483C7C,$EFA3A3A35B523C3E,$718D8D8D5E868687,$09D46BF85CA5017F
  Data.q $457425000000FC30,$633A657461647458,$3032006574616572,$33312D39302D3930,$353A33313A333154
  Data.q $B430303A32302B36,$7425000000190F09,$3A65746164745845,$3200796669646F6D,$312D39302D393030
  Data.q $3A33313A33315433,$30303A32302B3635,$19000000A5B754C5,$74666F5374584574,$6F64410065726177
  Data.q $6567616D49206562,$65C9717964616552,$4E4549000000003C
  Data.b $44,$AE,$42,$60,$82
  sourceicone910116_png_end:
EndDataSection

DataSection
  Quitter_png_start:
  ; size : 947 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$4144497A03000061
  Data.q $5B686D5365DA7854,$7A6CBE6DEF3D1865,$ABB4EB14964D649B,$6C41B698D6B86E22,$73B420B5AB0A9871
  Data.q $A9CE2B8D4876D2AB,$15A13F31C5962D8C,$0FD86732DB12C574,$958EC0CB22C2DB05,$59AAD36A0CA230AD
  Data.q $AC6989AD7EDDD487,$02EF87EE4DEF6DC9,$E78FEF3C3C0F4D93,$20FF821CF79C0F39,$D57BABABAB6E0C18
  Data.q $21396D5AB4793264,$CBCBCB8B72E5C984,$969696EBEC58B193,$5B5B479DC9E7BBE9,$59513FF4ECECE91B
  Data.q $835A98BD0511A3D9,$A0425432CAA067C4,$B5F1AAB12981362D,$D5D5D1BC89123054,$D582850A1043DFC5
  Data.q $41541C4B4BB576BB,$C455A46342358E80,$E41595F83AE37D22,$9B16212B3B8C1272,$6EEEEE9E13131322
  Data.q $6D7AFA3A3A304F3E,$15902BFEBC405555,$F40766C18662D861,$A60559614645105A,$564905326C8DBC4F
  Data.q $1A1ECB907DC5E5B0,$ACDCDCD25E9D3A72,$57662370E3EBEBEB,$D4BFB62CD9287193,$E641CABD02EACC86
  Data.q $CA67C7E2377161D7,$68C3601490F3AD21,$FEFA1A3C92E46B81,$FBD37D9EF9F3E251,$75E840EFB9F8C5DA
  Data.q $2918FF1C761CE6E1,$184509412D71062E,$F0A12B7B8B0E7C9F,$4E3969362AB2109B,$060647DD8B65817C
  Data.q $7C79FD5B5F3F0E06,$6FDCC811D3322CE4,$8A8B75210CFF0AA8,$85C2A684DD9A8698,$AC19EEF7DC0691EC
  Data.q $FEFD04B7020077BC,$FBFA4233DE9F10C3,$7CE64FAEB5CD7DFB,$F06ACC51E6B7A85E,$C5E5346B413FB7C0
  Data.q $7E4C09FD32061865,$83D3E187EF8ABF83,$BAC2DF5A50286F48,$B1E4E2887239F773,$03D2613B3C57FDA3
  Data.q $585197D3928B5666,$4514597E40F500E2,$33AC1F19CA36A964,$C2BEC73024664893,$0BF76EDC4B39222F
  Data.q $F5043FEB343870E1,$0A3F60348A5879EA,$0A28A8BF3388F0C2,$C1E1CC2FC00A0A0A,$1CEBCC3908A0BB2F
  Data.q $EA753B3E32E87878,$B02040D95AB56243,$81EE75AE98D771E0,$C0EE87ADA9838845,$840D1A342CB11449
  Data.q $28B83811F4E41E0D,$F2BA086778060556,$0FBCFA8E8E8ED4C7,$F5EDEDEFDF1B1B1A,$06107E3998F50A3B
  Data.q $1B7DB20CACA4066E,$D798393FC2820298,$8A3BECA09AD55813,$C97E3E3E30A7CEAD,$1ACB2C04F27BF7EF
  Data.q $BBADADADC3DBDBDA,$2407E578B1ABAA6B,$46A01DFA5A402F27,$B3071FDB8836CC52,$C1224482D9AC06A3
  Data.q $9BD1A347D4F4F4F5,$D0D0D8C786995AFF,$2E5CBB2F3C78F010,$75E5D3A74070E1C6,$24920E38E0D3A748
  Data.q $3BDE1E1E1B5FB4A9,$0DB8593DC7F53535,$9695F3C9A56BD7AF,$721F546C0942BE96,$B3B3B3A8C993249B
  Data.q $E0C1FA8A917ED37F,$A683BC697FF460E0,$F5EBB366CD8D26A6,$0887E6B755550AFA,$32B52A54F9E25249
  Data.q $BE0FFF3DDE263636,$0096E2DE2A6A872A,$AE444E4549000000
  Data.b $42,$60,$82
  Quitter_png_end:
EndDataSection

DataSection
  Prfrences_png_start:
  ; size : 1047 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$4D41670400000061
  Data.q $8A0537C8AF000041,$474B6206000000E9,$A0FF00FF00FF0044,$700900000093A7BD,$0048000000735948
  Data.q $3E6BC94600480000,$6741707609000000,$1000000010000000,$030000C3ADC65C00,$8DCB38544144490B
  Data.q $5CFF1871CC4C7D53,$F3864A8B685C95D7,$84C84C899D79B3B6,$2759F79A4BC3F931,$B191DA1B3083FAAD
  Data.q $BDD61575DD8432F2,$475DE7284ABD6E51,$57717A31D1ADE424,$F1EFDFBF2F769B97,$3D9ED9E5A3F8C66D
  Data.q $7CF3E79FBECF3DDF,$F00F3DE66007DFBE,$5DABC0449C722017,$00338DFFE3A53710,$37CD10ABE3F0B3F6
  Data.q $EC1A9EA91D76CCA0,$D1218BA3EAC12CEE,$3D7C7189B802FA29,$FF1076A43C3ADEF4,$EB4165D7846A6E06
  Data.q $C664442A6D923547,$84C10017A1B357C2,$2AA202FA1E00F48D,$2AF9D9682081A710,$AEE43E2547796048
  Data.q $ABF8005EF1FB0CC3,$E9EE0B57021991D0,$4CB3EF60B71B543E,$BEEA00D48BB2769C,$CA24E70E255DEF0F
  Data.q $2F3DDACF92A6A6C3,$9063FBAC1BA005FF,$94B12436FD1E1ABB,$6FFCE47F24B8B988,$70356AC2D4CD214D
  Data.q $C96A64993D96F3E9,$F6A875121BC8AC9A,$FD17F0A00C7411AF,$4ABE11120B2A0D36,$DAF49714A5698C57
  Data.q $E8354F200EEEECE0,$E5B9B2611A14A9E0,$8C507DCF6345ADE7,$2C046CDF8E94A45E,$4C2BA161A9B14819
  Data.q $B8EC51EBBEE0CBC0,$6685ECEBFD58A881,$30358E260EB37D33,$A9F85966E6102C64,$97C36D2DB4C91B46
  Data.q $87CD00731F91CD65,$8B19E9054229E811,$2D7C7446F22C261E,$C1BC491F2E7E7593,$5F6C4674D41CA887
  Data.q $EB6B694C62F07692,$B74F99C842EF8AAC,$20C0CF60F3551542,$B79C81EFBA5475D7,$FF9E66A41E9816E1
  Data.q $CDE06ABE8150500B,$BAF2D86040C2E051,$F0C82E382FB19DB6,$101306CC6B5A0F83,$B9E3894D791133CF
  Data.q $38D9F533336ED889,$84E22F7CEBC8AD0E,$42544744E562A03B,$D8D09A45B67C427A,$9DAA07B422C63D35
  Data.q $3D96B7EA937880DC,$52E68083181DFBCA,$8FD1B4B9C58CEC98,$D0164A1875C6E58E,$E3ED73E7052D4D64
  Data.q $D2096F12FCB31EB4,$6FA8EDFA815A1792,$D37B806B391AF3FC,$213727998ADFCA21,$7D674CBC42657235
  Data.q $F2EE525BA3F17617,$45818226A44880A2,$98FF2ED6197E4095,$A34309F17EBD5923,$9DC587966A7B647D
  Data.q $719711A75A390E48,$1FF61524B9755124,$54A5715FF22E453E,$87344D76BEA8E90C,$F82D2C5DBE570D35
  Data.q $37AE946856DC0D64,$96CAFA1594A7FBA4,$3835B73EB87CF746,$703FE81F67823F72,$04B94CE87F84524A
  Data.q $C95983E1457C0313,$599293E513FEA7B7,$250000001B6947BB,$6574616474584574,$006574616572633A
  Data.q $2D39302D39303032,$34303A3930543531,$303A32302B38323A,$0000005057603930,$7461647458457425
  Data.q $796669646F6D3A65,$39302D3930303200,$303A39305435312D,$3A32302B38323A34,$0000ECEF3D483030
  Data.q $6F53745845741900,$4100657261777466,$616D492065626F64,$7179646165526567,$49000000003C65C9
  Data.b $45,$4E,$44,$AE,$42,$60,$82
  Prfrences_png_end:
EndDataSection

DataSection
  Aide_png_start:
    ; size : 564 bytes
    Data.q $0A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$4942730400000061
    Data.q $64087C0808080854,$5948700900000088,$0A0000F00A000073,$00009834AC4201F0,$6F53745845741800
    Data.q $4100657261777466,$7269462065626F64,$B34F736B726F7765,$4449B20100004E1F,$6BBF92A58D385441
    Data.q $2E676F3FC7144114,$6B442BB9024353B9,$415484FF418D4411,$5884D8220C2D13BB,$485150B16B410628
    Data.q $6085A82160908B44,$C4A98858526D4A93,$BD98346270858D5F,$9C59F7766EEC9DBB,$98183EA07B79DE1C
    Data.q $AA279BCBE67C3E61,$5F5F28BBCD94FFCA,$F2A20A1187A1903D,$DD2717A57C767D76,$AC6C6854FBDF7609
    Data.q $A819A49AB493883F,$C68B5760A1478C62,$F79DFB563B36FD1E,$BA6BAEED5AFE8DBA,$1A63F0C34808D86A
    Data.q $DC60F570E0512BC5,$8C127DD799F1E0B9,$648FC9441236795E,$4E4F6F8E5913C12B,$7A6599BE5F9C0C02
    Data.q $5FE5DD80E28F58C1,$866E81E8E8A7689B,$41A775462FCDBA89,$408890E6BA63B52F,$DB07B7D46C149AA8
    Data.q $4D2C12B6B1962D4F,$BC455D2D4D2803BD,$CFA7FBBBCC08A0CB,$4399DF8EC87415F5,$3C1879150CD119BC
    Data.q $8F860AE4CDD93E9A,$1610501BC8A7D8DD,$CEE5C5ED9E2F4FEA,$ADBB6B49E3D82E01,$FA0C0AE5879331B9
    Data.q $CBDAABC289F8E25C,$CDB41CC7F71E515B,$EA643F869B0EBFDF,$2D7F1DE9A1CAC1FE,$27A592132692A900
    Data.q $441C750FB923988C,$FFDE58AF05118146,$FFBEA680FB1954BE,$01205EFCCAD345F9,$BF1DF9ABF25AC0EA
    Data.q $B0A6C04181064560,$29B4AD3250296B45,$4FD4BFC14F610110,$80D24F69F7BE8A81,$444E454900000000
    Data.b $AE,$42,$60,$82
  Aide_png_end:
EndDataSection

;}

; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

; Remplace les accents par des lettres simple.
Procedure.s ReplaceAccents(Chaine$)
  
  Protected CaractereChercher.s
  Protected CaractereRemplace.s
  Protected I.i
  
  CaractereChercher.s = "àáâãäåçèéêëìíîïñòóôõöšùúûüýÿžÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖŠÙÚÛÜÝŸŽ"
  CaractereRemplace.s = "aaaaaaceeeeiiiinooooosuuuuyyzAAAAAACEEEEIIIINOOOOOSUUUUYYZ"
  
  For I = 1 To Len(CaractereChercher.s) 
    ReplaceString(Chaine$, Mid(CaractereChercher.s, I, 1), Mid(CaractereRemplace.s, I, 1), #PB_String_InPlace, 1)
  Next
  
  ; Vérification supplémantaire pour les caractères spéciaux passant de 1 à 2 caractères:
  Chaine$ = ReplaceString(Chaine$, "œ", "oe")
  Chaine$ = ReplaceString(Chaine$, "æ", "ae")
  Chaine$ = ReplaceString(Chaine$, "Œ", "OE")
  Chaine$ = ReplaceString(Chaine$, "Æ", "AE")
  
  ProcedureReturn Chaine$
  
EndProcedure

; Lecture du fichier de code.
Procedure.i LectureFichier()
  
  ClearList(CodeVB.s())
  
  Fichiers$ = OpenFileRequester("Sélectionnez un fichier","","Texte (.txt)|*.txt", 0)
  
  If Fichiers$
    
    If ReadFile(1, Fichiers$, #PB_Ascii) ; Si le fichier peut être lu , on continue...
      
      While Eof(1) = 0        ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
        AddElement(CodeVB.s())
        CodeVB.s() = ReadString(1)
      Wend
      
      CloseFile(1) ; Ferme le fichier précédemment ouvert
      
    Else           ; Sinon ont affiche un message d'avertissement
      MessageRequester("Information","Impossible de lire le fichier !")
      ProcedureReturn 0
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
  ProcedureReturn 1
  
EndProcedure

; Nettoie le code, enlève toutes les lignes inutile.
Procedure NettoyageCode()
  
  ClearMap(Gadgets.GadgetInformation())
  ClearList(NomGadgetsVB.s())
  
  ; Recherche de: Private Sub InitializeComponent()
  ForEach CodeVB.s()
    
    ; Extrait le Nom de la fenêtre.
    If FindString(CodeVB.s(), "Partial Class ", 1, #PB_String_NoCase)
      NomFenetre$ = ReplaceAccents(Mid(CodeVB.s(), FindString(CodeVB.s(), "Partial Class ", 1, #PB_String_NoCase) + Len("Partial Class ")))
      AddMapElement(Gadgets.GadgetInformation(), NomFenetre$)
      Gadgets.GadgetInformation()\Type = "Form()"
      AddElement(NomGadgetsVB.s())
      NomGadgetsVB.s() = NomFenetre$
    EndIf
    
    ; Ont efface toutes les lignes lus jusqu'à trouver "Private Sub InitializeComponent()" et le supprime également.
    If Not FindString(CodeVB.s(), "Private Sub InitializeComponent()", 1, #PB_String_NoCase)
      DeleteElement(CodeVB.s()) 
      
    Else
      DeleteElement(CodeVB.s())
      Break
      
    EndIf
    
  Next
  
  ; 
  ForEach CodeVB.s()
    
    ; 
    If FindString(CodeVB.s(), "SuspendLayout", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "Padding", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "ISupportInitialize", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "UseVisualStyleBackColor", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "PerformLayout", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "ResumeLayout", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "TabIndex", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "AutoSize", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "TabStop", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "UseCompatibleStateImageBehavior", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "AutoScaleDimensions", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "AutoScaleMode", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "System.ComponentModel.ComponentResourceManager", 1, #PB_String_NoCase) Or
       FindString(CodeVB.s(), "Me.components = New System.ComponentModel.Container", 1, #PB_String_NoCase)
      DeleteElement(CodeVB.s()) 
    EndIf
    
  Next
  
  ; Recherche de: End Sub
  ForEach CodeVB.s()
    
    ; A partir de "End Sub", ont efface tous également.
    If FindString(CodeVB.s(), "End Sub", 1, #PB_String_NoCase)
      Delette.b = #True
    EndIf
    
    If Delette.b = #True
      DeleteElement(CodeVB.s()) 
    EndIf
    
  Next
  
EndProcedure

; Etrait le Nom du Gadgets.
Procedure.s ExtraireNomGadget(Ligne$)
  
  Point.i = FindString(Ligne$, ".", 1, #PB_String_NoCase)
  Espace.i = FindString(Ligne$, Chr(32), Point.i + 1, #PB_String_NoCase)
  
  ProcedureReturn ReplaceAccents(Mid(Ligne$, Point.i + 1, Espace.i - (Point.i + 1)))
  
EndProcedure

; Etrait la position du Gadget.
Procedure.s ExtrairePositionEtTailleGadget(Ligne$)
  
  Position$ = Mid(Ligne$, FindString(Ligne$, "(", 1, #PB_String_NoCase) + 1, (FindString(Ligne$, ")", 1, #PB_String_NoCase)) - (FindString(Ligne$, "(", 1, #PB_String_NoCase) + 1))
  ProcedureReturn Position$
  
EndProcedure

; Etrait le Texte du Gadget.
Procedure.s ExtraireTexteGadget(Ligne$)
ProcedureReturn StringField(Ligne$, 2, Chr(34)) 
EndProcedure

; Extrait les éléments d'un menu.
Procedure.s ExtraireElementsGadget(Ligne$)
  
  ElementsGadget$ = Mid(Ligne$, FindString(Ligne$, "{", 1, #PB_String_NoCase) + 1, (FindString(Ligne$, "}", 1, #PB_String_NoCase)) - (FindString(Ligne$, "{", 1, #PB_String_NoCase) + 1))
  ProcedureReturn RemoveString(ElementsGadget$, "Me.", #PB_String_NoCase, 1)
  
EndProcedure

; Extrait les Gadgets enfant d'un Gadget.
Procedure.s ExtraireGadgetsEnfant(Ligne$)
  
  GadgetsEnfant$ = Mid(Ligne$, FindString(Ligne$, "(", 1, #PB_String_NoCase) + 1, (FindString(Ligne$, ")", 1, #PB_String_NoCase)) - (FindString(Ligne$, "(", 1, #PB_String_NoCase) + 1))
  ProcedureReturn RemoveString(GadgetsEnfant$, "Me.", #PB_String_NoCase, 1)
  
EndProcedure

; Recense et identifie le type de chaque Gadgets.
Procedure RecensementGadget()
  
  GadgetVB$ = "WebBrowser, TreeView, ToolStripStatusLabel, ToolStripProgressBar, ToolStripSeparator, ToolStripMenuItem, ToolStripButton, ToolStrip, TabPage, TabControl, StatusStrip, SplitContainer, RichTextBox, TextBox, RadioButton, ProgressBar, PictureBox, Panel, NumericUpDown, MenuStrip, MonthCalendar, ListView, CheckedListBox, ListBox, LinkLabel, Label, GroupBox, DateTimePicker, ContextMenuStrip(Me.components), ComboBox, CheckBox, Button"
  
  ForEach CodeVB.s()
    
    ; Est ce la création d'un nouveau Gadget ?
    If FindString(CodeVB.s(), "New System.Windows.Forms", 1, #PB_String_NoCase) And Not FindString(CodeVB.s(), "Dim", 1, #PB_String_NoCase)
      
      For I = 1 To CountString(GadgetVB$, ", ") + 1
        
        GadgetVBExtrait$ = StringField(GadgetVB$, I, ", ") + "()"
        
        If FindString(CodeVB.s(), GadgetVBExtrait$, 1, #PB_String_NoCase)
          
          NomGadget$ = ExtraireNomGadget(CodeVB.s())
          
          If Not FindMapElement(Gadgets.GadgetInformation(), NomGadget$)
            AddMapElement(Gadgets.GadgetInformation(), NomGadget$)
          EndIf
          
          Gadgets.GadgetInformation(NomGadget$)\Type = GadgetVBExtrait$
          
          AddElement(NomGadgetsVB.s())
          NomGadgetsVB.s() = NomGadget$
          
          Break
          
        ElseIf FindString(CodeVB.s(), "ContextMenuStrip(Me.components)", 1, #PB_String_NoCase)
          
          NomGadget$ = ExtraireNomGadget(CodeVB.s())
          
          If Not FindMapElement(Gadgets.GadgetInformation(), NomGadget$)
            AddMapElement(Gadgets.GadgetInformation(), NomGadget$)
          EndIf
          
          Gadgets.GadgetInformation(NomGadget$)\Type = "ContextMenuStrip(Me.components)"
          
          AddElement(NomGadgetsVB.s())
          NomGadgetsVB.s() = NomGadget$
          
          ; Récupère le Nom de la fenêtre.
          ForEach Gadgets.GadgetInformation()
            
            If Gadgets.GadgetInformation()\Type = "Form()"
              NomFenetre$ = MapKey(Gadgets.GadgetInformation())
              Break
            EndIf
            
          Next
          
          ; Ajoute le menu contextuel en tant qu'enfants de la fenêtre.
          AddElement(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant())
          Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant() = NomGadget$
          
          Break
          
        ElseIf FindString(CodeVB.s(), "CType(New System.Windows.Forms.ColumnHeader()", 1, #PB_String_NoCase) And FindString(CodeVB.s(), "System.Windows.Forms.ColumnHeader)", 1, #PB_String_NoCase)
          
          NomGadget$ = ExtraireNomGadget(CodeVB.s())
          
          AddMapElement(Gadgets.GadgetInformation(), NomGadget$)
          Gadgets.GadgetInformation(NomGadget$)\Type = "ColumnHeader()"
          
        EndIf
        
      Next
      
    EndIf
    
  Next
  
EndProcedure

; Regroupe le code appartenant à chaque Gadgets (Caracteristiques).
Procedure DecoupageCode()
  
  ForEach CodeVB.s()
    
    If CodeVB.s() = ""
      Continue
    EndIf
    
    ; Recherche le premier caractère visible de la ligne de code.
    For Index.i = 1 To Len(CodeVB.s())
      
      PremierCaractere$ = Mid(CodeVB.s(), Index.i, 1)
      
      If Asc(PremierCaractere$) > 32
        PositionPremierCaractere.i = Index.i
        Break
      EndIf
      
    Next
    
    If NumCom.i = 0
      
      If FindString(CodeVB.s(), "Dim ", 1, #PB_String_NoCase) And FindString(CodeVB.s(), " As ", 1, #PB_String_NoCase) And FindString(CodeVB.s(), "New System.Windows.Forms.TreeNode(", 1, #PB_String_NoCase)
        
        ; Extraction du nom du lien du Tree.
        Debut.i = FindString(CodeVB.s(), "Dim", 1, #PB_String_NoCase) + Len("Dim") + 1
        Longueur.i = FindString(CodeVB.s(), " As ", Debut.i, #PB_String_NoCase) - Debut.i
        
        NomLienTree$ = Mid(CodeVB.s(), Debut.i, Longueur.i)
        
        ; Extraction du texte du lien du Tree.
        Debut.i = FindString(CodeVB.s(), "New System.Windows.Forms.TreeNode(", 1, #PB_String_NoCase) + Len("New System.Windows.Forms.TreeNode(") + 1
        Longueur.i = FindString(CodeVB.s(), Chr(34), Debut.i, #PB_String_NoCase) - Debut.i
        
        TexteLienTree$ = Mid(CodeVB.s(), Debut.i, Longueur.i)
        
        Gadgets.GadgetInformation(NomLienTree$)\Texte = TexteLienTree$
        Gadgets.GadgetInformation(NomLienTree$)\Type = "TreeNodeItem()"
        
        GadgetEnfants$ = ExtraireElementsGadget(CodeVB.s())
        
        If GadgetEnfants$ > ""
          
          For I = 1 To CountString(GadgetEnfants$, ", ") + 1
            AddElement(Gadgets.GadgetInformation(NomLienTree$)\NomGadgetsEnfant())
            Gadgets.GadgetInformation(NomLienTree$)\NomGadgetsEnfant() = StringField(GadgetEnfants$, I, ", ")
          Next
          
        EndIf
        
        Continue
        
      ElseIf FindString(CodeVB.s(), "Dim ", 1, #PB_String_NoCase) And FindString(CodeVB.s(), " As ", 1, #PB_String_NoCase) And FindString(CodeVB.s(), "New System.Windows.Forms.ListViewItem(", 1, #PB_String_NoCase)
        
        ; Extraction du nom de l'item de la ListView.
        Debut.i = FindString(CodeVB.s(), "Dim", 1, #PB_String_NoCase) + Len("Dim") + 1
        Longueur.i = FindString(CodeVB.s(), " As ", Debut.i, #PB_String_NoCase) - Debut.i
        
        ; Nom de l'item de la ListView
        NomItemListView$ = Mid(CodeVB.s(), Debut.i, Longueur.i)
        
        ; Extraction des Sub élements de l'item de la ListView.
        
        ; Si il y a plus de 1 enfants
        If FindString(CodeVB.s(), "{") And FindString(CodeVB.s(), "}") 
          ListViewSubElements$ = ExtraireElementsGadget(CodeVB.s())
          
        Else ; Extraction du texte du texte de l'élément de la Listeview.
          
          Debut.i = FindString(CodeVB.s(), Chr(34), 1, #PB_String_NoCase)
          Longueur.i = FindString(CodeVB.s(), Chr(34), Debut.i + 1, #PB_String_NoCase) - Debut.i + 1
          
          ListViewSubElements$ = Mid(CodeVB.s(), Debut.i, Longueur.i)
          
        EndIf
        
        ; Création du Gadget.
        AddMapElement(Gadgets.GadgetInformation(), NomItemListView$)
        Gadgets.GadgetInformation(NomItemListView$)\Type = "ListViewElement()"
        
        ; Ajout des éléments en tant qu'enfant de l'item de la ListView.
        For K = 1 To CountString(ListViewSubElements$, ", ") + 1
          
          NomListViewSubElements$ = NomItemListView$ + "_SubElement_" + ReplaceString(StringField(ListViewSubElements$, K, ", "), Chr(34), "", #PB_String_NoCase, 1)
          TexteListViewSubElements$ = Mid(StringField(ListViewSubElements$, K, ", "), 2, Len(StringField(ListViewSubElements$, K, ", ")) - 2)
          
          ; Ajout du SubItem en tans qu'enfan de l'item de la ListView.
          AddElement(Gadgets.GadgetInformation(NomItemListView$)\NomGadgetsEnfant())
          Gadgets.GadgetInformation(NomItemListView$)\NomGadgetsEnfant() = NomListViewSubElements$
          
          ; Création du Gadget.
          AddMapElement(Gadgets.GadgetInformation(), NomListViewSubElements$)
          Gadgets.GadgetInformation(NomListViewSubElements$)\Texte = TexteListViewSubElements$
          Gadgets.GadgetInformation(NomListViewSubElements$)\Type = "ListViewSubElement()"
          
        Next
        
      EndIf
      
    EndIf
    
    If PremierCaractere$ = "'"
      NumCom.i + 1
    EndIf
    
    If NumCom.i = 2 ; Nom du Gadget.
      
      NomGadget$ = ReplaceAccents(Mid(CodeVB.s(), PositionPremierCaractere.i + 1))
      
      If Not FindMapElement(Gadgets.GadgetInformation(), NomGadget$)
        AddMapElement(Gadgets.GadgetInformation(), NomGadget$)
      EndIf
      
    EndIf
    
    If NumCom.i = 3
      
      If PremierCaractere$ <> "'"
        
        If FindString(CodeVB.s(), "New System.Drawing.Point(", 1, #PB_String_NoCase)
          
          Gadgets.GadgetInformation(NomGadget$)\X = Val(StringField(ExtrairePositionEtTailleGadget(CodeVB.s()), 1, ", "))
          Gadgets.GadgetInformation(NomGadget$)\Y = Val(StringField(ExtrairePositionEtTailleGadget(CodeVB.s()), 2, ", "))
          
          ; Si le gadget est un TreeView(), ont saute directement à Nodes.AddRange(New System.Windows.Forms.TreeNode() car les prochains éléments sont inutiles.
          If Gadgets.GadgetInformation(NomGadget$)\Type = "TreeView()"
            
            ; Mémorise l'élément courant.
            *PositionListe = @CodeVB.s()
            Deplacer.b = #False
            
            ; Recherche Nodes.AddRange(New System.Windows.Forms.TreeNode() à partir de la prochaione position.
            ForEach CodeVB.s()
              
              ; Seulement la première fois.
              If Deplacer.b = #False
                Deplacer.b = #True
                
                ; Va directement à la position mémorisé.
                ChangeCurrentElement(CodeVB.s(), *PositionListe)
                
                ; Va au prochain élément car celui-ci à déjà été fait.
                NextElement(CodeVB.s())
                
              EndIf
              
              ; Si ont trouve "Nodes.AddRange(New System.Windows.Forms.TreeNode()", ont reviens 1 élément en arrière car il dois être traité et le sera à la prochaine itération de la boucle, et quitte la boucle.
              If FindString(CodeVB.s(), "Nodes.AddRange(New System.Windows.Forms.TreeNode()", 1, #PB_String_NoCase)
                PreviousElement(CodeVB.s())
                Break
              EndIf
              
            Next
            
          EndIf
          
          Continue ; Passe directement à la prochaine itération.
          
        ElseIf FindString(CodeVB.s(), "New System.Drawing.Size(", 1, #PB_String_NoCase)
          
          Gadgets.GadgetInformation(NomGadget$)\Largeur = Val(StringField(ExtrairePositionEtTailleGadget(CodeVB.s()), 1, ", "))
          Gadgets.GadgetInformation(NomGadget$)\Hauteur = Val(StringField(ExtrairePositionEtTailleGadget(CodeVB.s()), 2, ", "))
          
        ElseIf FindString(CodeVB.s(), ".Text = " + Chr(34), 1, #PB_String_NoCase)
          Gadgets.GadgetInformation(NomGadget$)\Texte = ExtraireTexteGadget(CodeVB.s())
            
        ElseIf FindString(CodeVB.s(), "AddRange(New Object()", 1, #PB_String_NoCase)
          GadgetElements$ = ExtraireElementsGadget(CodeVB.s())
          
          For I = 1 To CountString(GadgetElements$, ", ") + 1
            
            NomElement$ = NomGadget$ + "_Element_" + ReplaceString(StringField(GadgetElements$, I, ", "), Chr(34), "", #PB_String_NoCase, 1)
            AddMapElement(Gadgets.GadgetInformation(), NomElement$)
            Gadgets.GadgetInformation(NomElement$)\Texte = Mid(StringField(GadgetElements$, I, ", "), 2, Len(StringField(GadgetElements$, I, ", ")) - 2)
            
            If Gadgets.GadgetInformation(NomGadget$)\Type = "ComboBox()"
              Gadgets.GadgetInformation(NomElement$)\Type = "ComboBoxElement()"
              
            ElseIf Gadgets.GadgetInformation(NomGadget$)\Type = "ListBox()" Or Gadgets.GadgetInformation(NomGadget$)\Type = "CheckedListBox()"
              Gadgets.GadgetInformation(NomElement$)\Type = "ListBoxElement()"
              
            EndIf
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant())
            Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant() = NomElement$
            
          Next
          
        ElseIf FindString(CodeVB.s(), "AddRange(", 1, #PB_String_NoCase)
          
          If FindString(CodeVB.s(), ".Columns.", 1, #PB_String_NoCase)
            
            ; Ajout des colonnes en tant qu'enfants de la ListView.
            ColonneListView$ = ExtraireElementsGadget(CodeVB.s())
            
            For L = 1 To CountString(ColonneListView$, ", ") + 1
              ; Ajout des colonnes en tans qu'enfan de la ListView.
              AddElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant())
              Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant() = StringField(ColonneListView$, L, ", ")
            Next
            
          ElseIf FindString(CodeVB.s(), ".Items.", 1, #PB_String_NoCase)
            
            ; Ont ajoute les élément à la ListView.
            NomsItemListView$ = ExtraireElementsGadget(CodeVB.s())
            
            For I = 1 To CountString(NomsItemListView$, ", ") + 1
              ; Ajout de l'item en tans qu'enfan de la ListView.
              AddElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant())
              Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant() = StringField(NomsItemListView$, I, ", ")
            Next
            
          ElseIf FindString(CodeVB.s(), ".Groups.", 1, #PB_String_NoCase) ; Ignore.
            
          Else
            
            GadgetElements$ = ExtraireElementsGadget(CodeVB.s())
            
            For I = 1 To CountString(GadgetElements$, ", ") + 1
              AddElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant())
              Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant() = StringField(GadgetElements$, I, ", ")
            Next
            
          EndIf
          
        ElseIf FindString(CodeVB.s(), "Controls.Add(", 1, #PB_String_NoCase)
          
          GadgetsEnfant$ = ExtraireGadgetsEnfant(CodeVB.s())
          
          AddElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant())
          Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant() = GadgetsEnfant$
          
        ElseIf FindString(CodeVB.s(), ".SplitterDistance = ", 1, #PB_String_NoCase)
          
          If FindString(NomGadget$, ".")
            NomSpiterGadget$ = StringField(NomGadget$, 1, ".")
            
          Else
            NomSpiterGadget$ = NomGadget$
            
          EndIf
          
          ; Récupération de la distance du panel 2, qui est la largeur du panel 1.
          Distance.i = Val(Mid(CodeVB.s(), FindString(CodeVB.s(), ".SplitterDistance = ", 1, #PB_String_NoCase) + Len(".SplitterDistance = ")))
          
          ; Si les deux panel sont manquant, toutes les informations sont dans le panel lui même.
          If Not FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel1") And Not FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel2")
            
            ; Création du panel 1 et 2.
            AddMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel1")
            AddMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel2")
            
            ; Création des informations.
            
            If FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel2")
              
              ; Création de la taille du panel 2 depuis la taille du panel lui même, elle sera revue plus bas.
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Largeur = Gadgets.GadgetInformation(NomSpiterGadget$)\Largeur
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Hauteur = Gadgets.GadgetInformation(NomSpiterGadget$)\Hauteur
              
            EndIf
            
            ; Recherche et ajoute le panel 1 si il n'éxiste pas, ça position et taille sera revue plus bas..
          ElseIf Not FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel1")
            AddMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel1")
            
            ; Recherche et ajoute le panel 2 si il n'éxiste pas.
          ElseIf Not FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel2")
            AddMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel2")
            
            If FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel2") And FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel1")
              
              ; Création de la taille du panel 2 depuis le panel 1, elle sera revue plus bas.
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Largeur = Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel1")\Largeur
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Hauteur = Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel1")\Hauteur
              
            EndIf
            
          EndIf
          
          ; Détermination de la taille des deux Panel.
          
          ; La taille du SplitterGadget ainsi que ces panneaux ne sont pas correcte pour nous.
          ; Certaines information sont inexacte, voir manquantes, nous allont les corriger et les créer.
          
          ; Recherche du panel 2, tous ce fait grace à lui.
          If FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel2")
            
            ; Modification de la positition et de la taille du panel 2.
            
            ; Position X du panel 2.
            XPanel2.i = Distance.i + 1
            Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\X = XPanel2.i
            
            ; Position Y du panel 2.
            YPanel2.i = Gadgets.GadgetInformation(NomSpiterGadget$)\Y + 1
            Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Y = YPanel2.i
            
            ; Largeur du panel 2.
            LargeurPanel2.i = Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Largeur - 2 - Distance.i
            Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Largeur = LargeurPanel2.i
            
            ; Hauteur du panel 2.
            HauteurPanel2.i = Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Hauteur - 2
            Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel2")\Hauteur = HauteurPanel2.i
            
            ; Modification de la position et de la taille du panel 1.
            
            If FindMapElement(Gadgets.GadgetInformation(), NomSpiterGadget$ + ".Panel1")
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel1")\X = Gadgets.GadgetInformation(NomSpiterGadget$)\X + 1
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel1")\Y = Gadgets.GadgetInformation(NomSpiterGadget$)\Y + 1
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel1")\Largeur = Distance.i - 2
              Gadgets.GadgetInformation(NomSpiterGadget$ + ".Panel1")\Hauteur = HauteurPanel2.i
            EndIf
            
            ; Modification de la taille du Gadget, ici le SpliterGadget.
            
            Gadgets.GadgetInformation(NomSpiterGadget$)\Largeur = LargeurPanel2.i + 2 + Distance.i
            Gadgets.GadgetInformation(NomSpiterGadget$)\Hauteur = HauteurPanel2.i + 2
            
          EndIf
          
        ElseIf FindString(CodeVB.s(), "Me.", 1, #PB_String_NoCase) And FindString(CodeVB.s(), ".Width = ", 1, #PB_String_NoCase)
          LargeurColonne.i = Val(Mid(CodeVB.s(), FindString(CodeVB.s(), "= ", 1, #PB_String_NoCase) + Len("= ")))
          Gadgets.GadgetInformation(NomGadget$)\Largeur = LargeurColonne.i
          
        EndIf
        
      EndIf
      
    EndIf
    
    If NumCom.i = 4
      NumCom.i = 1
    EndIf
    
  Next
  
EndProcedure

; Recherche les enfants de chaque Gadget SplitContainer.
Procedure ChercheSplitContainerEnfants()
  
  ; Recherche les SplitContainer.
  ForEach Gadgets.GadgetInformation()
    
    ; Si ont en à trouvé un.
    If Gadgets.GadgetInformation(MapKey(Gadgets.GadgetInformation()))\Type = "SplitContainer()"
      
      ; Mémorise son Nom.
      NomSplitContainer$ = MapKey(Gadgets.GadgetInformation())
      
      ; Sauvegarde la position dans la Map.
      PushMapPosition(Gadgets.GadgetInformation())
      
      ; Recherche ces enfants.
      If FindMapElement(Gadgets.GadgetInformation(), NomSplitContainer$ + ".Panel1")
        
        ; Ajoute l'enfants en tant qu'enfant du Gadget.
        AddElement(Gadgets.GadgetInformation(NomSplitContainer$)\NomGadgetsEnfant())
        Gadgets.GadgetInformation(NomSplitContainer$)\NomGadgetsEnfant() = NomSplitContainer$ + ".Panel1"
        
        ; Ajoute le type du Gadget.
        Gadgets.GadgetInformation(NomSplitContainer$ + ".Panel1")\Type = "SplitContainer.Panel()"
        
      EndIf
      
      If FindMapElement(Gadgets.GadgetInformation(), NomSplitContainer$ + ".Panel2")
        
        ; Ajoute l'enfants en tant qu'enfant du Gadget.
        AddElement(Gadgets.GadgetInformation(NomSplitContainer$)\NomGadgetsEnfant())
        Gadgets.GadgetInformation(NomSplitContainer$)\NomGadgetsEnfant() = NomSplitContainer$ + ".Panel2"
        
        ; Ajoute le type du Gadget.
        Gadgets.GadgetInformation(NomSplitContainer$ + ".Panel2")\Type = "SplitContainer.Panel()"
        
      EndIf
      
      ; Restaure la position de la Map.
      PopMapPosition(Gadgets.GadgetInformation())
      
    EndIf
    
  Next
  
EndProcedure

; Cherche et mémorise le nom des deux prochain Gadget enfants du gadget parent.
Procedure ChercheProchainGadgets()
  
  ; Passe en revue tous les Gadgets.
  ForEach NomGadgetsReorganiserVB.s()
    
    ; Mémorise le Nom du Gadget.
    NomGadget$ = NomGadgetsReorganiserVB.s()
    
    ; Cherche les deux prochain Gadget enfants de ce Gadget.
    
    ; Cherche le Nom du Gadget dans la Map.
    If FindMapElement(Gadgets.GadgetInformation(), NomGadget$)
      
      ; Le gadget à t-il des enfants ?
      If ListSize(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()) > 0
        
        ; Séléctionne le premier enfant.
        SelectElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant(), 0)
        
        ; Enregistre le premier enfant.
        Gadgets.GadgetInformation(NomGadget$)\NomGadgetsSuivant[0] = Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
        
        ; Le gadget à t-il plus de 1 enfants ?
        If ListSize(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()) > 1
          
          ; Séléctionne le deuxième enfant.
          SelectElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant(), 1)
          
          ; Enregistre le deuxième enfant.
          Gadgets.GadgetInformation(NomGadget$)\NomGadgetsSuivant[1] = Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
          
        EndIf
        
      Else
        Continue
        
      EndIf
      
    EndIf
    
  Next
  
EndProcedure

; Reorganise l'ordre des gadgets enfants de la fenêtre en commancent par la fenêtre, le menu, la barre d'outil, le ou les menu contextuel, puis la barre de Statut.
Procedure ReorganiseGadgetsEnfantFenetre()
  
  NomMenuPrincipal$ = ""
  NomBarreOutil$ = ""
  NewList NomMenuContextuel.s()
  NomBarreStatut$ = ""
  NewList AutreGadgetsEnfant.s()
  ReorganisationGadgetsEnfantFenetre.b = #False
  
  ; Récupère le Nom de la fenêtre.
  ForEach Gadgets.GadgetInformation()
    
    If Gadgets.GadgetInformation()\Type = "Form()"
      NomFenetre$ = MapKey(Gadgets.GadgetInformation())
      Break
    EndIf
    
  Next
  
  ; Si la fenêtre à des enfants.
  If ListSize(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant()) > 0
    
    ; Passe en revue tous les enfants de la fenêtre.
    ForEach Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant()
      
      ; Récupère le nom du gadget enfant de la fenêtre.
      NomGadgetEnfant$ = Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant()
      
      ; Mémorise l'élément courant.
      PushMapPosition(Gadgets.GadgetInformation())
      
      ; Recherche et mémorise le type du gadget enfant de la fenêtre grace à son nom.
      FindMapElement(Gadgets.GadgetInformation(), NomGadgetEnfant$)
      TypeGadget$ = Gadgets.GadgetInformation()\Type
      
      ; Restaure l'élément courant.
      PopMapPosition(Gadgets.GadgetInformation())
      
      If TypeGadget$ = "MenuStrip()" ; Menu Principal.
        NomMenuPrincipal$ = NomGadgetEnfant$
        ReorganisationGadgetsEnfantFenetre.b = #True
        
      ElseIf TypeGadget$ = "ToolStrip()" ; Barre d'outils.
        NomBarreOutil$ = NomGadgetEnfant$
        ReorganisationGadgetsEnfantFenetre.b = #True
        
      ElseIf TypeGadget$ = "ContextMenuStrip(Me.components)" ; Menu Contextuel.
        AddElement(NomMenuContextuel.s())
        NomMenuContextuel.s() = NomGadgetEnfant$
        ReorganisationGadgetsEnfantFenetre.b = #True
        
      ElseIf TypeGadget$ = "StatusStrip()"
        NomBarreStatut$ = NomGadgetEnfant$
        ReorganisationGadgetsEnfantFenetre.b = #True
        
      Else
        AddElement(AutreGadgetsEnfant.s())
        AutreGadgetsEnfant.s() = NomGadgetEnfant$
        
      EndIf
      
    Next
    
    If ReorganisationGadgetsEnfantFenetre.b = #True
      
      ; Efface la liste des gadgets enfant de la fenêtre
      ClearList(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant())
      
      ; Ajoute le menu.
      If NomMenuPrincipal$ > ""
        AddElement(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant())
        Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant() = NomMenuPrincipal$
      EndIf
      
      ; Ajoute la barre d'outil.
      If NomBarreOutil$ > ""
        AddElement(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant())
        Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant() = NomBarreOutil$
      EndIf
      
      ; Ajoute les noms des menu.
      If ListSize(NomMenuContextuel.s()) > 0
        ForEach NomMenuContextuel.s()
          AddElement(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant())
          Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant() = NomMenuContextuel.s()
        Next
      EndIf
      
      ; Ajoute la barre de statut.
      If NomBarreStatut$ > ""
        AddElement(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant())
        Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant() = NomBarreStatut$
      EndIf
      
      ; Ajoute ensuite les autres gadgets.
      ForEach AutreGadgetsEnfant.s()
        AddElement(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant())
        Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant() = AutreGadgetsEnfant.s()
      Next
      
    EndIf
    
  EndIf
  
  FreeList(NomMenuContextuel.s())
  FreeList(AutreGadgetsEnfant.s())
  
EndProcedure

; Reorganise l'ordre des gadgets enfants du gadget parent en mettant tous les SpliterGadget à la fin.
Procedure ReorganiseGadgetsEnfantGadgetParent()
  
  NewList NomEnfantsGadget.s()
  
  ForEach Gadgets.GadgetInformation()
    
    ; Nom du gadget.
    NomGadget$ = MapKey(Gadgets.GadgetInformation())
    
    ; Si le gadget a plus de 1 enfant.
    If ListSize(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()) > 1
      
      ; Mémorise l'élément courant.
      PushMapPosition(Gadgets.GadgetInformation())
      
      ; Parcourt tous les gadgets enfants du gadget.
      ForEach Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
        
        ; Nom de l'enfant du gadget.
        NomEnfantGadget$ = Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
        
        ; Recherche l'enfant.
        If FindMapElement(Gadgets.GadgetInformation(), NomEnfantGadget$)
          
          ; Mémorise son type.
          TypeEnfantGadget$ = Gadgets.GadgetInformation(NomEnfantGadget$)\Type
          
          ; Si c'est un SplitContainer.
          If TypeEnfantGadget$ = "SplitContainer()"
            
            ; Va a la fin de la liste.
            LastElement(NomEnfantsGadget.s())
            
            ; Ajoute le SpliterGadget à la fin de la liste.
            AddElement(NomEnfantsGadget.s())
            NomEnfantsGadget.s() = NomEnfantGadget$
            
            ; Restaure la position dans la liste.
            SelectElement(NomEnfantsGadget.s(), PositionListe.i)
            
          Else
            
            If PositionListe.i = 0 And ListSize(NomEnfantsGadget.s()) > 0
              ResetList(NomEnfantsGadget.s())
            EndIf
            
            ; Ajoute le Gadget à la liste.
            AddElement(NomEnfantsGadget.s())
            NomEnfantsGadget.s() = NomEnfantGadget$
            
            ; Sauvegarde la dernière position du gadget dans la liste.
            PositionListe.i = ListIndex(NomEnfantsGadget.s())
            
            If PositionListe.i = 0
              PositionListe.i = 1
            EndIf
            
          EndIf
          
        EndIf
        
      Next
      
      ; Efface tous les enfants du Gadget.
      ClearList(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant())
      
      ; Ajoute tous les enfants trié à la liste du Gadget.
      ForEach NomEnfantsGadget.s()
        AddElement(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant())
        Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant() = NomEnfantsGadget.s()
      Next
      
      ; Efface tous les enfants enregistré.
      ClearList(NomEnfantsGadget.s())
      
      PositionListe.i = 0
      
      ; Restaure l'élément courant.
      PopMapPosition(Gadgets.GadgetInformation())
      
    EndIf
    
  Next
  
  FreeList(NomEnfantsGadget.s())
  
EndProcedure

; Affecte une valeur en fonction du type et de l'objet du menu (Principal, Contextuel), (titre, item, SubMenu).
Procedure IdentifieMenuItems(NomMenu$, ParentMenu$, Premier.b)
  
  ForEach Gadgets.GadgetInformation(NomMenu$)\NomGadgetsEnfant()
    
    NomElementMenu$ = Gadgets.GadgetInformation(NomMenu$)\NomGadgetsEnfant()
    
    If ParentMenu$ = "MenuPrincipal"
      
      ; C'est le premier, ex: Fichier, Edition, etc.
      If Premier.b = #True
        Gadgets.GadgetInformation(NomElementMenu$)\MenuItemType = "PTitre"
        
      Else ; C'est pas le premier, ex: Nouveau, Ouvrir, etc.
        
        ; A t-il des enfants ?
        If ListSize(Gadgets.GadgetInformation(NomElementMenu$)\NomGadgetsEnfant()) > 0
          Gadgets.GadgetInformation(NomElementMenu$)\MenuItemType = "PSubMenu"
          
        Else
          Gadgets.GadgetInformation(NomElementMenu$)\MenuItemType = "PItem"
          
        EndIf
        
      EndIf
      
      If ListSize(Gadgets.GadgetInformation(NomElementMenu$)\NomGadgetsEnfant()) > 0
        IdentifieMenuItems(NomElementMenu$, "MenuPrincipal", #False)
      EndIf
      
    ElseIf ParentMenu$ = "MenuContextuel"
      
      ; A t-il des enfants ?
      If ListSize(Gadgets.GadgetInformation(NomElementMenu$)\NomGadgetsEnfant()) > 0
        Gadgets.GadgetInformation(NomElementMenu$)\MenuItemType = "CSubMenu"
        
      Else
        Gadgets.GadgetInformation(NomElementMenu$)\MenuItemType = "CItem"
        
      EndIf
      
      If ListSize(Gadgets.GadgetInformation(NomElementMenu$)\NomGadgetsEnfant()) > 0
        IdentifieMenuItems(NomElementMenu$, "MenuContextuel", #False)
      EndIf
      
    EndIf
    
  Next
  
EndProcedure

; Affecte une valeur en fonction du type et de l'objet Separateur (Menu, Barre d'outil, Barre de Status).
Procedure IdentifieSeparateur(NomGadget$, ParentGadget$)
  
  ForEach Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
    
    NomElementGadget$ = Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
    TypeElementGadget$ = Gadgets.GadgetInformation(NomElementGadget$)\Type
    
    If ParentGadget$ = "Menu"
      
      If TypeElementGadget$ = "ToolStripSeparator()"
        Gadgets.GadgetInformation(NomElementGadget$)\SeparateurItemType = "M"
        
      EndIf
      
      IdentifieSeparateur(NomElementGadget$, "Menu")
      
    ElseIf ParentGadget$ = "Barre d'outils"
      
      If TypeElementGadget$ = "ToolStripSeparator()"
        Gadgets.GadgetInformation(NomElementGadget$)\SeparateurItemType = "BO"
      EndIf
      
    EndIf
    
  Next
  
EndProcedure

; Génère le code de chaque Gadget.
Procedure GenereCodeGadget(NomFenetre$, NomGadgetParent$)
  
  ForEach Gadgets.GadgetInformation(NomGadgetParent$)\NomGadgetsEnfant()
    
    NomGadget$ = Gadgets.GadgetInformation(NomGadgetParent$)\NomGadgetsEnfant()
    
    ; Sauvegarde la position dans la Map.
    PushMapPosition(Gadgets.GadgetInformation())
    
    ; Cherche le Gadget et enregistre ces informations.
    If FindMapElement(Gadgets.GadgetInformation(), NomGadget$)
      
      GadgetX.i = Gadgets.GadgetInformation(NomGadget$)\X
      GadgetY.i = Gadgets.GadgetInformation(NomGadget$)\Y
      GadgetLargeur.i = Gadgets.GadgetInformation(NomGadget$)\Largeur
      GadgetHauteur.i = Gadgets.GadgetInformation(NomGadget$)\Hauteur
      GadgetType$ = Gadgets.GadgetInformation(NomGadget$)\Type
      GadgetTexte$ = Gadgets.GadgetInformation(NomGadget$)\Texte
      
    EndIf
    
    ; Restaure la position de la Map.
    PopMapPosition(Gadgets.GadgetInformation())
    
    If GadgetType$ = "MenuStrip()" ; Menu Principal.
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Menu Principal."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "If CreateImageMenu(#" + NomGadget$ + ", WindowID(#" + NomFenetre$ + "), 0)"
      
      MenuPrincipalFait.b = #True
      
    ElseIf GadgetType$ = "ToolStripMenuItem()" ; Element Menu.
      
      MenuType$ = Gadgets.GadgetInformation(NomGadget$)\MenuItemType
      
      If MenuType$ = "PTitre"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Titre du menu Principal."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "MenuTitle(" + Chr(34) + GadgetTexte$ + Chr(34) + ")"
        
      ElseIf MenuType$ = "PItem"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Element du menu Principal."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "MenuItem(#" + NomGadget$ + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ")"
        
      ElseIf MenuType$ = "PSubMenu"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SubMenu du menu Principal."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "OpenSubMenu(" + Chr(34) + GadgetTexte$ + Chr(34) + ")"
        
      ElseIf MenuType$ = "CItem"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Element d'un menu Contextuel."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "MenuItem(#" + NomGadget$ + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ")"
        
      ElseIf MenuType$ = "CSubMenu"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SubMenu d'un menu Contetuel."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "OpenSubMenu(" + Chr(34) + GadgetTexte$ + Chr(34) + ")"
        
      EndIf
      
    ElseIf GadgetType$ = "ToolStripSeparator()" ; Séparateur de menu.
      
      If Gadgets.GadgetInformation(NomGadget$)\SeparateurItemType = "M"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Séparateur d'un Menu."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "MenuBar()"
        
      ElseIf Gadgets.GadgetInformation(NomGadget$)\SeparateurItemType = "BO"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Séparateur d'une barre d'outils."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "ToolBarSeparator()"
        
      EndIf
      
    ElseIf GadgetType$ = "ToolStrip()" ; Barre d'outils.
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Barre D'outils."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "If CreateToolBar(#" + NomGadget$ + ", WindowID(#" + NomFenetre$ + "), #PB_ToolBar_Text)"
      
    ElseIf GadgetType$ = "ToolStripButton()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ToolBarStandardButton."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ToolBarStandardButton(#" + NomGadget$ + ", #PB_ToolBarIcon_New, #PB_ToolBar_Normal, " + Chr(34) + GadgetTexte$ + Chr(34) + ")"
      
    ElseIf GadgetType$ = "ContextMenuStrip(Me.components)" ; Menu Contextuel.
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Menu Contextuel " + NomGadget$ + "."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "If CreatePopupImageMenu(#" + NomGadget$ + ", 0)"
      
    ElseIf GadgetType$ = "StatusStrip()" ; Barre de Statut.
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Barre de Statut."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "If CreateStatusBar(#" + NomGadget$ + ", WindowID(#" + NomFenetre$ + "))"
      
    ElseIf GadgetType$ = "ToolStripStatusLabel()" ; Texte barre de Status.
      
      ; Sauvegarde la position dans la Map.
      PushMapPosition(Gadgets.GadgetInformation())
      
      ; Recherche le Nom de la barre de Status.
      ForEach Gadgets.GadgetInformation()
        
        If Gadgets.GadgetInformation(MapKey(Gadgets.GadgetInformation()))\Type = "StatusStrip()"
          NomBarreStatus$ = MapKey(Gadgets.GadgetInformation())
          Break
        EndIf
        
      Next
      
      ; Restaure la position de la Map.
      PopMapPosition(Gadgets.GadgetInformation())
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute un champs à la barre de Status."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "AddStatusBarField(150)"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Texte du champs n°" + Str(IndexBarreStatus) + " de la barre de Status."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "StatusBarText(#" + NomBarreStatus$ + ", " + Str(IndexBarreStatus) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ")"
      
      IndexBarreStatus + 1
      
    ElseIf GadgetType$ = "ToolStripProgressBar()" ; Barre de progression barre de Status.
      
      ; Sauvegarde la position dans la Map.
      PushMapPosition(Gadgets.GadgetInformation())
      
      ; Recherche le Nom de la barre de Status.
      ForEach Gadgets.GadgetInformation()
        
        If Gadgets.GadgetInformation(MapKey(Gadgets.GadgetInformation()))\Type = "StatusStrip()"
          NomBarreStatus$ = MapKey(Gadgets.GadgetInformation())
          Break
        EndIf
        
      Next
      
      ; Restaure la position de la Map.
      PopMapPosition(Gadgets.GadgetInformation())
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute un champs à la barre de Status."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "AddStatusBarField(150)"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute une Barre de progression au champs n°" + Str(IndexBarreStatus) + " de la barre de Status."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "StatusBarProgress(#" + NomBarreStatus$ + ", " + Str(IndexBarreStatus) + ", 0, " + "#PB_StatusBar_BorderLess, 0, 100)"
      
      IndexBarreStatus + 1
      
    ElseIf GadgetType$ = "WebBrowser()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; WebGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "WebGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ")"
      
    ElseIf GadgetType$ = "TreeView()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; TreeGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "TreeGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0)"
      
      NomTreeView$ = NomGadget$
      
    ElseIf GadgetType$ = "TreeNodeItem()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute un nouvel élément au TreeGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "AddGadgetItem(#" + NomTreeView$ + ", -1, " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0, " + Str(Gadgets.GadgetInformation(NomGadget$)\NiveauHierarchique - 1 - Gadgets.GadgetInformation(NomTreeView$)\NiveauHierarchique) + ")"
      
    ElseIf GadgetType$ = "ComboBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ComboBoxGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ComboBoxGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0)"
      
      NomComboBox$ = NomGadget$
      
    ElseIf GadgetType$ = "ComboBoxElement()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute un nouvel élément à la CombotBox."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "AddGadgetItem(#" + NomComboBox$ + ", -1, " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0, 0)"
      
    ElseIf GadgetType$ = "TabPage()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute un nouvel élément au PanelGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "AddGadgetItem(#" + NomGadgetParent$ + ", -1, " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0, 0)"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ContainerGadget"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ContainerGadget(#" + NomGadget$ + ", 1, 1, " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0)"
      
    ElseIf GadgetType$ = "TabControl()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; PanelGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "PanelGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ")"
      
    ElseIf GadgetType$ = "SplitContainer()"
      
      ; Sauvegarde la position dans la Map.
      PushMapPosition(Gadgets.GadgetInformation())
      
      ; Recherche le Panel1 du SplitContainer.
      If FindMapElement(Gadgets.GadgetInformation(), NomGadget$ + ".Panel1")
        
        Panel1GadgetLargeur.i = Gadgets.GadgetInformation(NomGadget$ + ".Panel1")\Largeur
        Panel1GadgetHauteur.i = Gadgets.GadgetInformation(NomGadget$ + ".Panel1")\Hauteur
        
        ; SplitContainer.Panel1 à combien d'enfants ?
        EnfantsSplitContainer_Panel1.i = ListSize(Gadgets.GadgetInformation(NomGadget$ + ".Panel1")\NomGadgetsEnfant())
        
        If EnfantsSplitContainer_Panel1.i > 0
          
          ; Extraction du nom du gadget enfant.
          SelectElement(Gadgets.GadgetInformation(NomGadget$ + ".Panel1")\NomGadgetsEnfant(), 0)
          NomGadgetEnfantSplitContainer_Panel1$ = Gadgets.GadgetInformation(NomGadget$ + ".Panel1")\NomGadgetsEnfant()
          
        EndIf
        
      Else
        EnfantsSplitContainer_Panel1.i = 0
        NomGadgetEnfantSplitContainer_Panel1$ = ""
        
      EndIf
      
      ; Recherche le Panel2 du SplitContainer.
      If FindMapElement(Gadgets.GadgetInformation(), NomGadget$ + ".Panel2")
        
        Panel2GadgetLargeur.i = Gadgets.GadgetInformation(NomGadget$ + ".Panel2")\Largeur
        Panel2GadgetHauteur.i = Gadgets.GadgetInformation(NomGadget$ + ".Panel2")\Hauteur
        
        ; SplitContainer.Panel1 à combien d'enfants ?
        EnfantsSplitContainer_Panel2.i = ListSize(Gadgets.GadgetInformation(NomGadget$ + ".Panel2")\NomGadgetsEnfant())
        
        If EnfantsSplitContainer_Panel2.i > 0
          
          ; Extraction du nom du gadget enfant.
          SelectElement(Gadgets.GadgetInformation(NomGadget$ + ".Panel2")\NomGadgetsEnfant(), 0)
          NomGadgetEnfantSplitContainer_Panel2$ = Gadgets.GadgetInformation(NomGadget$ + ".Panel2")\NomGadgetsEnfant()
          
        EndIf
        
      EndIf
      
      If EnfantsSplitContainer_Panel1.i = 0
        
        If EnfantsSplitContainer_Panel2.i = 0
          
          AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
          Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
          
          AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
          Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadget$ + "_Panel1, " + "#" + NomGadget$ + "_Panel2, #PB_Splitter_Vertical | #PB_Splitter_Separator)"
          
        ElseIf EnfantsSplitContainer_Panel2.i > 0
          
          If EnfantsSplitContainer_Panel2.i = 1
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
            Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
            Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadget$ + "_Panel1, " + "#" + NomGadgetEnfantSplitContainer_Panel2$ + ", #PB_Splitter_Vertical | #PB_Splitter_Separator)"
            
          ElseIf EnfantsSplitContainer_Panel2.i > 1
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
            Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
            Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadget$ + "_Panel1, " + "#" + NomGadget$ + "_Panel2" + ", #PB_Splitter_Vertical | #PB_Splitter_Separator)"
            
          EndIf
          
        EndIf
        
      ElseIf EnfantsSplitContainer_Panel1.i > 0
        
        If EnfantsSplitContainer_Panel1.i = 1
          
          If EnfantsSplitContainer_Panel2.i = 0
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
            Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
            Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadgetEnfantSplitContainer_Panel1$ + ", #" + NomGadget$ + "_Panel2" + ", #PB_Splitter_Vertical | #PB_Splitter_Separator)"
            
          ElseIf EnfantsSplitContainer_Panel2.i > 0
            
            If EnfantsSplitContainer_Panel2.i = 1
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
              Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
              Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadgetEnfantSplitContainer_Panel1$ + ", #" + NomGadgetEnfantSplitContainer_Panel2$ + ", #PB_Splitter_Vertical | #PB_Splitter_Separator)"
              
            ElseIf EnfantsSplitContainer_Panel2.i > 1
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
              Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
              Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadgetEnfantSplitContainer_Panel1$ + ", #" + NomGadget$ + "_Panel2" + ", #PB_Splitter_Vertical | #PB_Splitter_Separator)"
              
            EndIf
            
          EndIf
          
        ElseIf EnfantsSplitContainer_Panel1.i > 1
          
          If EnfantsSplitContainer_Panel2.i = 0
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
            Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
            
            AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
            Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadget$ + "_Panel1, #" + NomGadget$ + "_Panel2" + ", #PB_Splitter_Vertical | #PB_Splitter_Separator)"
            
          ElseIf EnfantsSplitContainer_Panel2.i > 0
            
            If EnfantsSplitContainer_Panel2.i = 1
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
              Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
              Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadget$ + "_Panel1, #" + NomGadgetEnfantSplitContainer_Panel2$ + ", #PB_Splitter_Vertical | #PB_Splitter_Separator)"
              
            ElseIf EnfantsSplitContainer_Panel2.i > 1
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
              Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SplitterGadget."
              
              AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
              Gadgets.GadgetInformation(NomGadget$)\Commande() = "SplitterGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #" + NomGadget$ + "_Panel1, #" + NomGadget$ + "_Panel2, #PB_Splitter_Vertical | #PB_Splitter_Separator)"
              
            EndIf
            
          EndIf
          
        EndIf
        
      EndIf
      
      ; Restaure la position de la Map.
      PopMapPosition(Gadgets.GadgetInformation())
      
    ElseIf GadgetType$ = "SplitContainer.Panel()"
      
      If ListSize(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()) = 0 Or ListSize(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()) > 1
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ContainerGadget"
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "ContainerGadget(#" + ReplaceString(NomGadget$, ".", "_", #PB_String_NoCase) + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #PB_Container_Flat)"
        
      EndIf
      
    ElseIf GadgetType$ = "RichTextBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; EditorGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "EditorGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0)"
      
      If Gadgets.GadgetInformation(NomGadget$)\Texte > ""
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute une ligne de texte."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "SetGadgetText(#" + NomGadget$ + ", " + Chr(34) + Gadgets.GadgetInformation(NomGadget$)\Texte + Chr(34) + ")"
        
      EndIf
      
    ElseIf GadgetType$ = "TextBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; StringGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "StringGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0)"
      
      If Gadgets.GadgetInformation(NomGadget$)\Texte > ""
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
        Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute une ligne de texte."
        
        AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
        Gadgets.GadgetInformation(NomGadget$)\Commande() = "SetGadgetText(#" + NomGadget$ + ", " + Chr(34) + Gadgets.GadgetInformation(NomGadget$)\Texte + Chr(34) + ")"
        
      EndIf
      
    ElseIf GadgetType$ = "RadioButton()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; OptionGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "OptionGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ")"
      
    ElseIf GadgetType$ = "ProgressBar()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ProgressBarGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ProgressBarGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0, 100, 0)"
      
    ElseIf GadgetType$ = "PictureBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ImageGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ImageGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0)"
      
    ElseIf GadgetType$ = "Panel()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ContainerGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ContainerGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", #PB_Container_Flat)"
      
    ElseIf GadgetType$ = "NumericUpDown()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; SpinGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "SpinGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0, 100, 0)"
      
    ElseIf GadgetType$ = "ListView()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ListIconGadget."
      
        ; Traitement de toutes les colonnes ainsi que les items et SubItems de la ListView.
        
        ; Sauvegarde la position dans la Map.
        PushMapPosition(Gadgets.GadgetInformation())
        
        ListViewNombreColonne.i = 0
        ListViewNombreElement.i = 0
        
        NomColonnes$ = ""
        NomItems$ = ""
        
        If ListSize(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()) > 0
          
          ; Recherche le nombre de colonne et d'item de la ListView0.
          ForEach Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
            
            NomEnfant$ = Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()
            
            If Gadgets.GadgetInformation(NomEnfant$)\Type = "ColumnHeader()"
              ListViewNombreColonne.i + 1
              NomColonnes$ + NomEnfant$ + ", "
              
            ElseIf Gadgets.GadgetInformation(NomEnfant$)\Type = "ListViewElement()"
              ListViewNombreElement.i + 1 
              NomItems$ + NomEnfant$ + ", "
              
            EndIf
            
          Next
          
          ; Enlève les virgules à la fin.
          NomColonnes$ = Mid(NomColonnes$, 1, Len(NomColonnes$) - 2)
          NomItems$ = Mid(NomItems$, 1, Len(NomItems$) - 2)
          
        EndIf
        
        ; Si il n'y a aucune colonnes, alors crée la commande avec une colonne vide et une taille fixe.
        If ListViewNombreColonne.i = 0
          AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
          Gadgets.GadgetInformation(NomGadget$)\Commande() = "ListIconGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + Chr(34) + ", 999, 0)"
          
        Else ; Crée la commande avec le texte de la première colonne ainsi que sa taille.
          
          TextePremiereColonnes$ = Gadgets.GadgetInformation(StringField(NomColonnes$, 1, ", "))\Texte
          TaillePremiereColonnes.i = Gadgets.GadgetInformation(StringField(NomColonnes$, 1, ", "))\Largeur
          
          AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
          Gadgets.GadgetInformation(NomGadget$)\Commande() = "ListIconGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + TextePremiereColonnes$ + Chr(34) + ", " + Str(TaillePremiereColonnes.i) + ", 0)"
          
          ; Ajout des colonne a la ListIconeGadget.
          For M = 2 To CountString(NomColonnes$, ", ") + 1 ; A partir de 2 car la première colonne à déjà été ajouter.
            
            ColonneNom$ = StringField(NomColonnes$, M, ", ")
            
            TexteColonnes$ = Gadgets.GadgetInformation(StringField(ColonneNom$, 1, ", "))\Texte
            TailleColonnes.i = Gadgets.GadgetInformation(StringField(ColonneNom$, 1, ", "))\Largeur
            
            AddElement(Gadgets.GadgetInformation(ColonneNom$)\CommentaireCommande())
            Gadgets.GadgetInformation(ColonneNom$)\CommentaireCommande() = "; Ajoute une colonne à la ListIconeGadget."
            
            AddElement(Gadgets.GadgetInformation(ColonneNom$)\Commande())
            Gadgets.GadgetInformation(ColonneNom$)\Commande() = "AddGadgetColumn(#" + NomGadget$ + ", " + Str(M - 1) + ", " + Chr(34) + TexteColonnes$ + Chr(34) + ", " + Str(TailleColonnes.i) + ")"
            
          Next
          
        EndIf
        
        ; Traite les élements de la ListView.
        
        ; Si il il y a des Items, les ajoute a la ListIconeGadget.
        If ListViewNombreElement.i > 0
          
          ; Parcour les items pour récupérer leurs SubItems.
          For M = 1 To CountString(NomItems$, ", ") + 1
            
            ItemNom$ = StringField(NomItems$, M, ", ")
            BufferItem$ = ""
            
            ; Traite les sous élements de la ListView.
            
            ; Ajout les SubItems a la ListIconeGadget.
            ForEach Gadgets.GadgetInformation(ItemNom$)\NomGadgetsEnfant()
              
              NomSubItem$ = Gadgets.GadgetInformation(ItemNom$)\NomGadgetsEnfant()
              
              AddElement(Gadgets.GadgetInformation(ItemNom$)\CommentaireCommande())
              Gadgets.GadgetInformation(ItemNom$)\CommentaireCommande() = "; Ajoute les SubItems à la ListIconeGadget."
              
              BufferItem$ + Chr(34) + Gadgets.GadgetInformation(NomSubItem$)\Texte + Chr(34) + " + Chr(10) + "
              
            Next
            
            ; Enlève le dernier " + Chr(10) + "
            BufferItem$ = Mid(BufferItem$, 1, Len(BufferItem$) - 13)
            
            AddElement(Gadgets.GadgetInformation(ItemNom$)\Commande())
            Gadgets.GadgetInformation(ItemNom$)\Commande() = "AddGadgetItem(#" + NomGadget$ + ", " + Str(M - 1) + ", " + BufferItem$ + ")"
            
          Next
          
        EndIf
        
        ; Restaure la position de la Map.
        PopMapPosition(Gadgets.GadgetInformation())
        
      ListIconGadget$ = NomGadget$
      
    ElseIf GadgetType$ = "ListBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ListViewGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ListViewGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0)"
      
      NomListBox$ = NomGadget$
      
    ElseIf GadgetType$ = "ListBoxElement()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Ajoute un nouvel élément à la ListView."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "AddGadgetItem(#" + NomListBox$ + ", -1, " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0, 0)"
      
    ElseIf GadgetType$ = "CheckedListBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; ListViewGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ListIconGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + "Colonne 1" + Chr(34) + ", 100, #PB_ListIcon_CheckBoxes)"
      
      NomListBox$ = NomGadget$
      
    ElseIf GadgetType$ = "LinkLabel()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; HyperLinkGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "HyperLinkGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0)"
      
    ElseIf GadgetType$ = "Label()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; TextGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "TextGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0)"
      
    ElseIf GadgetType$ = "GroupBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; FrameGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "FrameGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0)"
      
    ElseIf GadgetType$ = "DateTimePicker()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; DateGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "DateGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0, 0)"
      
    ElseIf GadgetType$ = "MonthCalendar()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; CalendarGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "CalendarGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", 0, 0)"
      
    ElseIf GadgetType$ = "CheckBox()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; CheckBoxGadget."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "CheckBoxGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0)"
      
    ElseIf GadgetType$ = "Button()"
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() = "; Bouton."
      
      AddElement(Gadgets.GadgetInformation(NomGadget$)\Commande())
      Gadgets.GadgetInformation(NomGadget$)\Commande() = "ButtonGadget(#" + NomGadget$ + ", " + Str(GadgetX.i) + ", " + Str(GadgetY.i) + ", " + Str(GadgetLargeur.i) + ", " + Str(GadgetHauteur.i) + ", " + Chr(34) + GadgetTexte$ + Chr(34) + ", 0)"
      
    Else
      
    EndIf
    
    If ListSize(Gadgets.GadgetInformation(NomGadget$)\NomGadgetsEnfant()) > 0
      GenereCodeGadget(NomFenetre$, NomGadget$)
    EndIf
    
  Next
  
EndProcedure

; Structure le code des gadgets.
Procedure StructureCode(NomGadgetParent$)
  
  ForEach Gadgets.GadgetInformation(NomGadgetParent$)\NomGadgetsEnfant()
    
    NomGadgetEnfant$ = Gadgets.GadgetInformation(NomGadgetParent$)\NomGadgetsEnfant()
    GadgetEnfantType$ = Gadgets.GadgetInformation(NomGadgetEnfant$)\Type
    
    ForEach Gadgets.GadgetInformation(NomGadgetEnfant$)\Commande()
      
      Commande$ = Gadgets.GadgetInformation(NomGadgetEnfant$)\Commande()
      SelectElement(Gadgets.GadgetInformation(NomGadgetEnfant$)\CommentaireCommande(), ListIndex(Gadgets.GadgetInformation(NomGadgetEnfant$)\Commande()))
      
      Commentaire$ = Gadgets.GadgetInformation(NomGadgetEnfant$)\CommentaireCommande()
      
      If GadgetEnfantType$ <> "SplitContainer()"
        
        If CompresseCode.b = #False
          
          AddElement(CodePB.s())
          CodePB.s() + Commentaire$
          
          AddElement(CodePB.s())
          CodePB.s() + Commande$
          
          AddElement(CodePB.s())
          CodePB.s() + ""
          
        Else
          
          AddElement(CodePB.s())
          CodePB.s() + Commande$ + " " + Commentaire$
          
        EndIf
        
      Else
        
        If CompresseCode.b = #False
          
          BufferCommandes$ + Commentaire$ + Chr(13) + Chr(10)
          BufferCommandes$ + Commande$ + Chr(13) + Chr(10)
          
        Else
          BufferCommandes$ + Commande$ + " " + Commentaire$ + Chr(13) + Chr(10)
          
        EndIf
        
      EndIf
      
    Next
    
    If ListSize(Gadgets.GadgetInformation(NomGadgetEnfant$)\NomGadgetsEnfant()) > 0
      StructureCode(NomGadgetEnfant$)
    EndIf
    
    If GadgetEnfantType$ = "TabControl()" Or GadgetEnfantType$ = "TabPage()" Or GadgetEnfantType$ = "SplitContainer.Panel()" Or GadgetEnfantType$ = "Panel()"
      
      If (GadgetEnfantType$ = "SplitContainer.Panel()" And (ListSize(Gadgets.GadgetInformation(NomGadgetEnfant$)\NomGadgetsEnfant()) = 0 Or ListSize(Gadgets.GadgetInformation(NomGadgetEnfant$)\NomGadgetsEnfant()) > 1)) Or GadgetEnfantType$ <> "SplitContainer.Panel()"
        
        If CompresseCode.b = #False
          
          AddElement(CodePB.s())
          CodePB.s() + "; Ferme la Gadget liste de " + NomGadgetEnfant$ + "."
          
          AddElement(CodePB.s())
          CodePB.s() + "CloseGadgetList()"
          
        Else
          
          AddElement(CodePB.s())
          CodePB.s() + "CloseGadgetList() ; Ferme la Gadget liste de " + NomGadgetEnfant$ + "."
          
        EndIf
        ;       
        ;         AddElement(CodePB.s())
        ;         CodePB.s() + ""
        ;         
      EndIf
      
    ElseIf GadgetEnfantType$ = "ToolStripMenuItem()" 
      
      If Gadgets.GadgetInformation(NomGadgetEnfant$)\MenuItemType = "PSubMenu"
        
        If CompresseCode.b = #False
          
          AddElement(CodePB.s())
          CodePB.s() + "; Ferme le sous menu de " + NomGadgetEnfant$ + " du menu Principal."
          
          AddElement(CodePB.s())
          CodePB.s() + "CloseSubMenu()"
          
        Else
          
          AddElement(CodePB.s())
          CodePB.s() + "CloseSubMenu() ; Ferme le sous menu de " + NomGadgetEnfant$ + " du menu Principal."
          
        EndIf
        
      ElseIf Gadgets.GadgetInformation(NomGadgetEnfant$)\MenuItemType = "CSubMenu"
        
        If CompresseCode.b = #False
          
          AddElement(CodePB.s())
          CodePB.s() + "; Ferme le sous menu de " + NomGadgetEnfant$ + " du menu Contextuel."
          
          AddElement(CodePB.s())
          CodePB.s() + "CloseSubMenu()"
          
        Else
          
          AddElement(CodePB.s())
          CodePB.s() + "CloseSubMenu() ; Ferme le sous menu de " + NomGadgetEnfant$ + " du menu Contextuel."
          
        EndIf
        
      EndIf
      
    ElseIf GadgetEnfantType$ = "MenuStrip()" Or GadgetEnfantType$ = "ContextMenuStrip(Me.components)" Or GadgetEnfantType$ = "StatusStrip()" Or GadgetEnfantType$ = "ToolStrip()"
      
      AddElement(CodePB.s())
      CodePB.s() + "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
    EndIf
    
    If BufferCommandes$ > ""
      
      For Index = 1 To CountString(BufferCommandes$, Chr(13) + Chr(10))
        AddElement(CodePB.s())
        CodePB.s() + StringField(BufferCommandes$, Index, Chr(13) + Chr(10))
      Next
      
      BufferCommandes$ = ""
      
    EndIf
    
  Next
  
EndProcedure

; Génère le code des évènements des gadgets.
Procedure GenereEventGadget(NomGadget$)
  
  GadgetType$ = Gadgets.GadgetInformation(NomGadget$)\Type
  
  If GenereCodeGetGadgetGadget.b = #True
    
    ; Evenement propre au Gadget.
    If GadgetType$ = "Button()"
      
      AddElement(CodePB.s())
      CodePB.s() = "Texte_" + NomGadget$ + "$ = GetGadgetText(#" + NomGadget$ + ") ; Renvoie le texte affiché sur le bouton."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; Utile avec les boutons de type bascule (#PB_Button_Toggle)."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatBascule_" + NomGadget$ + " .i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie l'état du Bouton à bascule (1 = pressé, 0 = normal)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "CheckBox()" ; CheckBoxGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Checkbox_Checked: La Case est cochée."
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Checkbox_Unchecked: La Case est décochée."
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Checkbox_Inbetween: L'état de la case à cocher est indéterminé (Seulement pour les cases à cocher de type #PB_CheckBox_ThreeState)."
      
      AddElement(CodePB.s())
      CodePB.s() = "Etat_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Pour récupérer l'état de la CheckBox."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ComboBox()" ; ComboBoxGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "Texte_" + NomGadget$ + "$ = GetGadgetText(#" + NomGadget$ + ") ; Renvoie le contenu texte de la zone visible de la ComboBox."
      
      AddElement(CodePB.s())
      CodePB.s() = "TexteElement_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie le texte de l'élément spécifié, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NumeroElementSelectionner_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie l'index de l'élément sélectionné ou -1 si aucun élément n'a été ajouté ou sélectionné."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurPersonnaliseeElement_" + NomGadget$ + ".i = GetGadgetItemData(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie la valeur personnalisée associée à cet élément, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreElements_" + NomGadget$ + ".i = CountGadgetItems(#" + NomGadget$ + ") ; Renvoie le nombre d'éléments que contient la ComboBox."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "Panel()" ; ContainerGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFond_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la couleur de fond du Panel."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "DateTimePicker()" ; DateGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "Date_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie la valeur numérique de la date actuellement affichée."
      
      AddElement(CodePB.s())
      CodePB.s() = "TexteDate_" + NomGadget$ + "$ = GetGadgetText(#" + NomGadget$ + ") ; Renvoie la date actuellement affichée sous forme de texte (Exactement comme elle est affichée)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Calendar_Minimum: Renvoie la date minimale que l'utilisateur peut choisir."
      
      AddElement(CodePB.s())
      CodePB.s() = "DateMinimal_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Date_Minimum) ; Renvoie la date minimale que l'utilisateur peut choisir."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Calendar_Maximum: Renvoie la date maximale que l'utilisateur peut choisir avec ce gadget (Remarque: la date sélectionnable n'est pas prise en charge sous Linux)."
      
      AddElement(CodePB.s())
      CodePB.s() = "DateMaximal_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Date_Maximum) ; Renvoie la date maximale que l'utilisateur peut choisir avec ce gadget, la date sélectionnable n'est pas prise en charge sous Linux."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexteJours_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur du texte pour les jours affichés (non pris en charge sur Windows Vista +)."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFond_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Couleur du fond du DateGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexteTitre_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_TitleFrontColor) ; Renvoie la couleur du texte du titre du mois."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTexteTitre_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_TitleBackColor ) ; Couleur du fond du titre du mois."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTitre_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_GrayTextColor) ; Renvoie la couleur du texte pour les jours n'appartenant pas au mois courant."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "MonthCalendar" ; CalendarGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "Date_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie la date actuellement affichée."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Renvoie #PB_Calendar_Bold quand la date spécifiée est affichée en gras, Sinon #PB_Calendar_Normal est renvoyé. 'Element' doit être une date au format PureBasic."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatElement_" + NomGadget$ + ".i = GetGadgetItemState(#" + NomGadget$ + ", NumeroElement.i) ; Détermine si une date donnée est en gras (Windows seulement), le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Calendar_Minimum: Renvoie la date minimale que l'utilisateur peut choisir."
      
      AddElement(CodePB.s())
      CodePB.s() = "DateMinimal_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Calendar_Minimum) ; Renvoie la date minimale que l'utilisateur peut choisir."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Calendar_Maximum: Renvoie la date maximale que l'utilisateur peut choisir avec ce gadget (Remarque: la date sélectionnable n'est pas prise en charge sous Linux)."
      
      AddElement(CodePB.s())
      CodePB.s() = "DateMaximal_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Calendar_Maximum) ; Renvoie la date maximale que l'utilisateur peut choisir avec ce gadget, la date sélectionnable n'est pas prise en charge sous Linux."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexteJours_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur du texte pour les jours affichés (non pris en charge sur Windows Vista +)."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFond_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la Couleur du fond du MonthCalendar."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexteTitre_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_TitleFrontColor) ; Renvoie la couleur du texte du titre du mois (non pris en charge sur Windows Vista +)."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTexteTitre_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_TitleBackColor ) ; Couleur du fond du titre du mois (non pris en charge sur Windows Vista +)."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTitre_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_GrayTextColor) ; Renvoie la couleur du texte pour les jours n'appartenant pas au mois courant (non pris en charge sur Windows Vista +)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "RichTextBox()" ; EditorGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "GadgetID_" + NomGadget$ + ".i" + " = GadgetID(#" + NomGadget$ + ")"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; Notez que le retour à la ligne se fait avec " + Chr(34) + "Chr(13) + Chr(10)" + Chr(34) + " sous Windows et avec " + Chr(34) + "Chr(10)" + Chr(34) + " sous Linux et OS X."
      
      AddElement(CodePB.s())
      CodePB.s() = "Texte_" + NomGadget$ + "$ = GetGadgetText(#" + NomGadget$ + ") ; Renvoie tout le texte contenu dans l'EditorGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "TexteElement_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie la ligne de texte spécifié, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreElements_" + NomGadget$ + ".i = CountGadgetItems(#" + NomGadget$ + ") ; Renvoie le nombre de lignes contenues dans l'EditorGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatLectureSeul_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Editor_ReadOnly) ; Renvoie l'état 'lecture seule' du gadget (0 = éditable, 1 = non éditable)."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatRetourLigneAutomatique_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Editor_WordWrap) ; Renvoie l'état du retour à la ligne automatique."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur du texte de l'EditorGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la Couleur du fond de l'EditorGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; Retourne la position X du curseur dans l'EditorGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "SendMessage_(GadgetID_" + NomGadget$ + ".i" + ", #EM_EXGETSEL,0 , Range.CHARRANGE) "
      
      AddElement(CodePB.s())
      CodePB.s() = "PositionCurseurX_" + NomGadget$ + ".i = (Range\cpMax-(SendMessage_(GadgetID_" + NomGadget$ + ".i" + ", #EM_LINEINDEX, SendMessage_(GadgetID_" + NomGadget$ + ".i" + ", #EM_EXLINEFROMCHAR,0 , Range\cpMin), 0)) +1)"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; Retourne la position Y du curseur dans l'EditorGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "SendMessage_(GadgetID_" + NomGadget$ + ".i" + ", #EM_EXGETSEL,0 , Range.CHARRANGE)"
      
      AddElement(CodePB.s())
      CodePB.s() = "PositionCurseurY_" + NomGadget$ + ".i = SendMessage_(GadgetID_" + NomGadget$ + ".i, #EM_EXLINEFROMCHAR, 0, Range\cpMin)+1"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "LinkLabel()" ; HyperLinkGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "Texte_" + NomGadget$ + "$ = GetGadgetText(#" + NomGadget$ + ") ; Renvoie le texte du HyperLinkGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurLien_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur du texte du HyperLinkGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondLien_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la Couleur du fond du HyperLinkGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "PictureBox()" ; ImageGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "ImageID_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie l'ImageID de l'image actuellement affichée."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ListView()" Or GadgetType$ = "CheckedListBox()" ; ListIconGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "TexteElement_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie le texte de l'élément spécifié, Si 'NumeroElement.i' = -1, Alors le titre de la colonne est renvoyé, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NumeroElementSelectionner_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie le premier élément selectionné ou -1 s'il n'y a pas d'élément sélectionné."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatElement_" + NomGadget$ + ".i = GetGadgetItemState(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie l'état de l'élément spécifié, Ce peut être une combinaison de #PB_ListIcon_Selected et #PB_ListIcon_Checked si les 'cases à cocher' sont affichées, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreElements_" + NomGadget$ + ".i = CountGadgetItems(#" + NomGadget$ + ") ; Renvoie le nombre d'éléments actuellement contenus dans la ListIconGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurElement_" + NomGadget$ + ".i" + " = GetGadgetItemColor(#" + NomGadget$ + ", NumeroElement.i, #PB_Gadget_FrontColor, Colonne.i) ; Renvoie la Couleur du texte de l'élément, le premier élément ainsi que colonne commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondElement_" + NomGadget$ + ".i" + " = GetGadgetItemColor(#" + NomGadget$ + ", NumeroElement.i, #PB_Gadget_BackColor, Colonne.i) ; Renvoie la Couleur du fond de l'élément, le premier élément ainsi que colonne commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurPersonnaliseeElement_" + NomGadget$ + ".i = GetGadgetItemData(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie la valeur personnalisée associée à cet élément, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreColonnel_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_ListIcon_ColumnCount) ; Renvoie le nombre de colonnes "
      
      AddElement(CodePB.s())
      CodePB.s() = "ModeAffichage_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_ListIcon_DisplayMode) ; Renvoie le mode d'affichage de la ListIconGadget (Windows uniquement)."
      
      AddElement(CodePB.s())
      CodePB.s() = "LargeurColonne_" + NomGadget$ + ".i = GetGadgetItemAttribute(#" + NomGadget$ + ", NumeroElement.i, #PB_ListIcon_ColumnWidth) ; Renvoie la largeur de la 'Colonne' spécifiée, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur du texte de la ListIconGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la Couleur du fond de la ListIconGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurGrille_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_LineColor) ; Renvoie la couleur de la grille si l'option #PB_ListIcon_GridLines est utilisée."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ListBox()"

      AddElement(CodePB.s())
      CodePB.s() = "TexteElement_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie le texte de l'élément sélectionné, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NumeroElementSelectionner_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie le premier élément selectionné ou -1 s'il n'y a pas d'élément sélectionné."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatElement_" + NomGadget$ + ".i = GetGadgetItemState(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie 0 si l'élément n'est pas séléctionné, Sinon une valeur non-nulle, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreElements_" + NomGadget$ + ".i = CountGadgetItems(#" + NomGadget$ + ") ; Renvoie le nombre d'éléments actuellement contenus dans la ListView."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurElement_" + NomGadget$ + ".i" + " = GetGadgetItemColor(#" + NomGadget$ + ", NumeroElement.i, #PB_Gadget_FrontColor, Colonne.i) ; Renvoie la Couleur du texte de l'élément, le premier élément ainsi que colonne commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondElement_" + NomGadget$ + ".i" + " = GetGadgetItemColor(#" + NomGadget$ + ", NumeroElement.i, #PB_Gadget_BackColor, Colonne.i) ; Renvoie la Couleur du fond de l'élément, le premier élément ainsi que colonne commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurPersonnaliseeElement_" + NomGadget$ + ".i = GetGadgetItemData(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie la valeur personnalisée associée à cet élément, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreColonnel_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_ListIcon_ColumnCount) ; Renvoie le nombre de colonnes "
      
      AddElement(CodePB.s())
      CodePB.s() = "ModeAffichage_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_ListIcon_DisplayMode) ; Renvoie le mode d'affichage de la ListView (Windows uniquement)."
      
      AddElement(CodePB.s())
      CodePB.s() = "LargeurColonne_" + NomGadget$ + ".i = GetGadgetItemAttribute(#" + NomGadget$ + ", NumeroElement.i, #PB_ListIcon_ColumnWidth) ; Renvoie la largeur de la 'Colonne' spécifiée, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur du texte de la ListView."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la Couleur du fond de la ListView."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurGrille_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_LineColor) ; Renvoie la couleur de la grille si l'option #PB_ListIcon_GridLines est utilisée."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "RadioButton()" ; OptionGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatElement_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie 1 s'il est activé, 0 sinon."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "TabControl()" ; PanelGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "TexteElement_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie le texte du Panel spécifié, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NumeroElementSelectionner_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie le numéro de l'onglet actuellement affiché."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreElements_" + NomGadget$ + ".i = CountGadgetItems(#" + NomGadget$ + ") ; Renvoie le nombre de Page actuellement contenus dans le PanelGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurPersonnaliseeElement_" + NomGadget$ + ".i = GetGadgetItemData(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie la valeur personnalisée associée à cet élément, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "LargeurZoneUntilisableOnglet_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Panel_ItemWidth) ; Renvoie la largeur de la zone utilisable d'un onglet."
      
      AddElement(CodePB.s())
      CodePB.s() = "HauteurZoneUntilisableOnglet_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Panel_ItemHeight) ; Renvoie la hauteur de la zone utilisable d'un onglet."
      
      AddElement(CodePB.s())
      CodePB.s() = "HauteurBoutonOnglet_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Panel_TabHeight) ; Renvoie la hauteur d'un bouton de changement d'onglet."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ProgressBar()" ; ProgressBarGadget()"
      
      AddElement(CodePB.s())
      CodePB.s() = "Valeur_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie la valeur courante de la barre de progression."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurMinimum_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_ProgressBar_Minimum) ; Renvoie la valeur Minimale de la Barre de Progression."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurMaximum_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_ProgressBar_Maximum) ; Renvoie la valeur Maximal de la Barre de Progression."
      
      AddElement(CodePB.s())
      CodePB.s() = "Couleur_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur de la barre de progression."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFond_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la couleur de fond de la barre de progression."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "NumericUpDown()" ; SpinGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "Valeur_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie la valeur du curseur interne."
      
      AddElement(CodePB.s())
      CodePB.s() = "Texte_" + NomGadget$ + "$ = GetGadgetText(#" + NomGadget$ + ") ; Renvoie le texte du SpinGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurMinimum_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Spin_Minimum) ; Renvoie la valeur Minimale possible."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurMaximum_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Spin_Maximum) ; Renvoie la valeur Maximal possible."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la couleur de la barre de progression."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondTexte_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la couleur de fond de la barre de progression."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "SplitContainer()" ; SplitterGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "PositionBarreSeparation_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie la position de la barre de séparation, en pixels."
      
      AddElement(CodePB.s())
      CodePB.s() = "TailleMinimumPremierGadget_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Splitter_FirstMinimumSize) ; Renvoie la taille minimale (en pixels) que le premier gadget associé peut avoir."
      
      AddElement(CodePB.s())
      CodePB.s() = "TailleMinimumDeuxiemeGadget_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Splitter_SecondMinimumSize) ; Renvoie la taille minimale (en pixels) que le deuxième gadget associé peut avoir."
      
      AddElement(CodePB.s())
      CodePB.s() = "NumeroPremierGadget_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Splitter_FirstGadget) ; Renvoie le numéro du premier gadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "NumeroDeuxiemeGadget_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Splitter_SecondGadget) ; Renvoie le numéro du deuxième gadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "TreeView()" ; TreeGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "Texte_" + NomGadget$ + "$ = GetGadgetText(#" + NomGadget$ + ") ; Renvoie le texte de l'élément sélectionné."
      
      AddElement(CodePB.s())
      CodePB.s() = "TexteElement_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie le texte de l'élément spécifié, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NumeroElementSelectionner_" + NomGadget$ + ".i = GetGadgetState(#" + NomGadget$ + ") ; Renvoie l'index de l'élément sélectionné ou -1 si aucun élément n'a été sélectionné."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Tree_Selected : L'élément est sélectionné."
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Tree_Expanded : L'élément est déployé (la branche de l'arbre est ouverte)."
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Tree_Collapsed: L'élément est fermé."
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Tree_Checked  : La Case à cocher de l'élément est cochée. (Si l'option #PB_Tree_CheckBoxes est utilisée)."
      
      AddElement(CodePB.s())
      CodePB.s() = "; #PB_Tree_Inbetween: L'élément a sa case à cocher associée " + Chr(34) + "indéterminée" + Chr(34) + "(Option #PB_ListIcon_ThreeState)."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatElement_" + NomGadget$ + ".i = GetGadgetItemState(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie l'état de l'élément spécifié, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurPersonnaliseeElement_" + NomGadget$ + ".i = GetGadgetItemData(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie la valeur personnalisée associée à cet élément, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "NombreElements_" + NomGadget$ + ".i = CountGadgetItems(#" + NomGadget$ + ") ; Renvoie le nombre d'éléments actuellement contenus dans le Tree."
      
      AddElement(CodePB.s())
      CodePB.s() = "NiveauElement_" + NomGadget$ + ".i = GetGadgetItemAttribute(#" + NomGadget$ + ", NumeroElement.i, #PB_Tree_SubLevel) ; Renvoie le niveau actuel de l'élément dans l'arbre, le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "ElementID_" + NomGadget$ + ".i = " + "GadgetItemID(#" + NomGadget$ + ", NumeroElement.i) ; Renvoie le 'handle' système de l'élément spécifié (utile pour les fonctions API), le premier élément commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "Couleur_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_FrontColor) ; Renvoie la Couleur du texte du Tree."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFond_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_BackColor) ; Renvoie la Couleur du fond du Tree."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurLigne_" + NomGadget$ + ".i" + " = GetGadgetColor(#" + NomGadget$ + ", #PB_Gadget_LineColor) ; Renvoie la Couleur des lignes reliant les noeuds du Tree."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurElement_" + NomGadget$ + ".i" + " = GetGadgetItemColor(#" + NomGadget$ + ", NumeroElement.i, #PB_Gadget_FrontColor, Colonne.i) ; Renvoie la Couleur du texte de l'élément, le premier élément ainsi que colonne commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = "CouleurFondElement_" + NomGadget$ + ".i" + " = GetGadgetItemColor(#" + NomGadget$ + ", NumeroElement.i, #PB_Gadget_BackColor, Colonne.i) ; Renvoie la Couleur du fond de l'élément, le premier élément ainsi que colonne commence à partir de 0."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "WebBrowser()" ; WebGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "CodeHtml_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", #PB_Web_HtmlCode) ; Renvoie le code html du gadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "TitrePage_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", #PB_Web_PageTitle) ; Renvoie le titre de la page affichée."
      
      AddElement(CodePB.s())
      CodePB.s() = "MessageBarreEtat_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", #PB_Web_StatusMessage) ; Renvoie le message actuel de la barre d'état."
      
      AddElement(CodePB.s())
      CodePB.s() = "TexteSelectionner_" + NomGadget$ + "$ = " + "GetGadgetItemText(#" + NomGadget$ + ", #PB_Web_SelectedText) ; Renvoie le texte sélectionné à l'intérieur du gadget."
      
      AddElement(CodePB.s())
      CodePB.s() = "PositionBarreDefilementHorizontale_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_ScrollX) ; Renvoie la position de la barre de défilement horizontale."
      
      AddElement(CodePB.s())
      CodePB.s() = "PositionBarreDefilementVerticale_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_ScrollY) ; Renvoie la position de la barre de défilement verticale."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatsChargement_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_Busy) ; Renvoie une valeur différente de zéro si le gadget est occupé à charger une page."
      
      AddElement(CodePB.s())
      CodePB.s() = "ProgressionActuel_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_Progress) ; Renvoie la progression actuelle (parfois estimée) après un évènement #PB_EventType_DownloadProgress."
      
      AddElement(CodePB.s())
      CodePB.s() = "ProgressionActuelMaximum_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_ProgressMax) ; Renvoie la progression actuelle maximum (parfois estimée) après un évènement #PB_EventType_DownloadProgress."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatBlocageFenetrePopup_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_BlockPopups) ; Renvoie la valeur actuelle de l'attribut de blocage des fenêtres popup."
      
      AddElement(CodePB.s())
      CodePB.s() = "EtatBlocageMenuPopup_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_BlockPopupMenu) ; Renvoie la valeur actuelle de l'attribut de blocage du menu popup."
      
      AddElement(CodePB.s())
      CodePB.s() = "ValeurCallBack_" + NomGadget$ + ".i = GetGadgetAttribute(#" + NomGadget$ + ", #PB_Web_NavigationCallback) ; Renvoie la valeur actuelle de la callback (Si elle existe)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    EndIf
    
  EndIf
  
  If GenereCodeEventTypeGadget.b = #True
    
    ; EventType
    If GadgetType$ = "WebBrowser()" ; WebGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType du WebGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_TitleChange ; Le titre de la page a changé (Windows seulement)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_StatusChange ; Le message de la barre d'état a changé (Windows seulement)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_DownloadStart ; Le téléchargement d'une page a commencé (Windows, OS X)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_DownloadProgress ; L'information de progression du téléchargement est disponible avec GetGadgetAttribute() (Windows seulement)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_DownloadEnd ; Le téléchargement d'une page s'est terminé (fini ou annulé) (Windows, OS X)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_PopupWindow ; Une fenêtre popup vient d'être bloquée (Windows seulement)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_PopupMenu ; Le menu popup vient d'être bloqué (utile pour afficher un menu personnalisé) (Windows seulement)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "RichTextBox()" ; EditorGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType de l'EditorGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Change ; Le texte a été modifié par l'utilisateur."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_Focus ; L'éditeur a obtenu le focus."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LostFocus ; L'éditeur a perdu le focus."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "TreeView()" ; TreeGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType du TreeGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Change ; L'élément courant a changé."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LeftClick ; Clic gauche sur un élément, ou une Case à cocher a été cochée/décochée."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LeftDoubleClick ; Double-clic gauche sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_RightClick ; Clic droit sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_RightDoubleClick ; Double-Clic droit sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_DragStart ; L'utilisateur a essayé de lancer une opération 'Glisser & Déposer'."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "TabControl()" ; PanelGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType du PanelGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Change ; L'onglet courant a changé."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_Resize ; Le Panel a été redimensionné."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "TabPage()" Or GadgetType$ = "Panel()" Or GadgetType$ = "SplitContainer.Panel()" ; ContainerGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType du ContainerGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Resize ; Le ContainerGadget a été redimensionné."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ListBox()" ; ListViewGadget() 
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType de l'ImageGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "if EventType_" + NomGadget$ + ".i = #PB_EventType_LeftClick ; L'utilisateur a cliqué sur l'image avec le bouton gauche de la souris."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LeftDoubleClick ; L'utilisateur a double-cliqué sur l'image avec le bouton gauche de la souris."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_RightClick ; L'utilisateur a cliqué sur l'image avec le bouton droit de la souris."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ListView()" Or GadgetType$ = "CheckedListBox()" ; ListIconGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType de la ListIconGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Change ; L'élément sélectionné a été changé."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LeftClick ; Clic gauche sur un élément, ou une Case à cocher a été cochée/décochée."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LeftDoubleClick ; Double-clic gauche sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_RightClick ; Clic droit sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_RightDoubleClick ; Double-Clic droit sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_DragStart ; L'utilisateur a essayé de lancer une opération 'Glisser & Déposer'."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ListView()" ; ListIconGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType de le ListIconGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Change ; L'élément sélectionné a été changé."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LeftClick ; Clic gauche sur un élément, ou une Case à cocher a été cochée/décochée."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LeftDoubleClick ; Double-clic gauche sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_RightClick ; Clic droit sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_RightDoubleClick ; Double-Clic droit sur un élément."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_DragStart ; L'utilisateur a essayé de lancer une opération 'Glisser & Déposer'."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "ComboBox()" ; ComboBoxGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType du ComboBox."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Change ; La sélection du texte dans le champ d'édition de la ComboBox a changé.."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_Focus ; Le champ d'édition de la ComboBox a reçu le focus clavier (ComboBox modifiable uniquement)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_LostFocus ; Le champ d'édition de la ComboBox a perdu le focus du clavier (ComboBox modifiable uniquement)."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    ElseIf GadgetType$ = "NumericUpDown()" ; SpinGadget()
      
      AddElement(CodePB.s())
      CodePB.s() = "EventType_" + NomGadget$ + ".i = EventType.i ; Sauvegarde le dernier EventType du SpinGadget."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "If EventType_" + NomGadget$ + ".i = #PB_EventType_Change ; L'utilisateur a changé le texte dans la zone d'édition."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_Up ; Le bouton 'Haut' a été pressé."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Elseif EventType_" + NomGadget$ + ".i = #PB_EventType_Down ; Le bouton 'Bas' a été pressé."
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
      AddElement(CodePB.s())
      CodePB.s() = "Endif"
      
      AddElement(CodePB.s())
      CodePB.s() = ""
      
    EndIf
    
  EndIf
  
EndProcedure

; Génération du Code PB.
Procedure GenerationCodePB()
  
  ClearList(CodePB.s())
  
  If GenereCodeEnumerationConstantes.b = #True
    
    ClearList(ConstantePB.s())
    
    ; Génération des Constantes
    ForEach NomGadgetsReorganiserVB.s()
      If Mid(NomGadgetsReorganiserVB.s(), 1, 1) <> Chr(34) And Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\Type <> "TreeNodeItem()"
        AddElement(ConstantePB.s())
        ConstantePB.s() = "#" + NomGadgetsReorganiserVB.s()
      EndIf
    Next
    
  EndIf
  
  ; Récupère le Nom de la fenêtre.
  ForEach Gadgets.GadgetInformation()
    
    If Gadgets.GadgetInformation()\Type = "Form()"
      NomFenetre$ = MapKey(Gadgets.GadgetInformation())
      Break
    EndIf
    
  Next
  
  If GenereCodeGadget.b = #True
    
    ; Identifie et marque les menu et leurs objets.
    ForEach NomGadgetsReorganiserVB.s()
      
      GadgetType$ = Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\Type
      
      If GadgetType$ = "MenuStrip()" ; Menu Principal.
        IdentifieMenuItems(NomGadgetsReorganiserVB.s(), "MenuPrincipal", #True)
        
      ElseIf GadgetType$ = "ContextMenuStrip(Me.components)"
        IdentifieMenuItems(NomGadgetsReorganiserVB.s(), "MenuContextuel", #False)
        
      EndIf
      
    Next
    
    ; Identifie et marque les separateur.
    ForEach NomGadgetsReorganiserVB.s()
      
      GadgetType$ = Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\Type
      
      If GadgetType$ = "MenuStrip()" Or GadgetType$ = "ContextMenuStrip(Me.components)"
        IdentifieSeparateur(NomGadgetsReorganiserVB.s(), "Menu")
        
      ElseIf GadgetType$ = "ToolStrip()"
        IdentifieSeparateur(NomGadgetsReorganiserVB.s(), "Barre d'outils")
        
      EndIf
      
    Next
    
    ; Génère le code de chaque Gadget.
    GenereCodeGadget(NomFenetre$, NomFenetre$)
    
  EndIf
  
  ; Génération du code d'énumération des Gadgets
  
  AddElement(CodePB.s())
  CodePB.s() = ""
  
  AddElement(CodePB.s())
  CodePB.s() = "; Code Généré avec le programme VB To PB."
  
  AddElement(CodePB.s())
  CodePB.s() = ""
  
  If GenereCodeEnumerationConstantes.b = #True
    
    AddElement(CodePB.s())
    CodePB.s() = "; Enumeration des Gadgets."
    
    AddElement(CodePB.s())
    CodePB.s() = "Enumeration"
    
    ; Récupération des Constantes
    ForEach ConstantePB.s()
      AddElement(CodePB.s())
      CodePB.s() = ConstantePB.s()
    Next
    
    AddElement(CodePB.s())
    CodePB.s() = "EndEnumeration"
    
    AddElement(CodePB.s())
    CodePB.s() = ""
    
  EndIf
  
  If GenereCodeGadget.b = #True
    
    ForEach Gadgets.GadgetInformation(NomFenetre$)\Commande()
      
      Commande$ = Gadgets.GadgetInformation(NomFenetre$)\Commande()
      SelectElement(Gadgets.GadgetInformation(NomFenetre$)\CommentaireCommande(), ListIndex(Gadgets.GadgetInformation(NomFenetre$)\Commande()))
      
      Commentaire$ = Gadgets.GadgetInformation(NomFenetre$)\CommentaireCommande()
      
      If CompresseCode.b = #False
        
        AddElement(CodePB.s())
        CodePB.s() + Commentaire$
        
        AddElement(CodePB.s())
        CodePB.s() + Commande$
        
      Else
        
        AddElement(CodePB.s())
        CodePB.s() + Commande$ + " " + Commentaire$
        
      EndIf
      
    Next
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    ; Structure le code.
    StructureCode(NomFenetre$)
    
  EndIf
  
  If GenereCodeBoucleEvenement.b = #True
    
    If GenereCodeEvenementFenetre.b = #True
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "; Les constantes des divers événement possible."
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_MoveWindowMouse = 512"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsLeftButtonDown = 513"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsLeftButtonUp = 514"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsLeftDoubleClick = 515"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsRightButtonDown = 516"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsRightButtonUp = 517"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsRightDoubleClick = 518"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsMiddleButtonDown = 519"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsMiddleButtonUp = 520"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsMiddleDoubleClick = 521"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_WindowsMouseWheel = 522"
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_MouseMoveOverTitleBar = 160"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_LeftButtonClickOverTitleBar = 161"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_LeftButtonUpOverTitleBar = 162"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_LeftButtonDoubleClickOverTitleBar = 163"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_RightButtonClickOverTitleBar = 164"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_RightButtonUpOverTitleBar = 165"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_MiddleButtonDownOverTitleBar = 167"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_MiddleButtonUpOverTitleBar = 168"
      
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_MiddleButtonDoubleClickOverTitleBar = 169"
      
      AddElement(CodePB.s())
      CodePB.s() + "#PB_Event_MouseEnterOrLeaveWindows = 674"
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
    EndIf
    
    AddElement(CodePB.s())
    CodePB.s() + "Repeat ; Départ des évènements de boucle."
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    AddElement(CodePB.s())
    CodePB.s() + "EventWindows.i = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la Fenêtre."
    
    AddElement(CodePB.s())
    CodePB.s() + "WindowID.i = EventWindow() ; La Fenêtre oû l'évènement c'est produit."
    
    AddElement(CodePB.s())
    CodePB.s() + "GadgetID.i = EventGadget() ; Pour savoir sur quel gadget c'est produis l'évènement."
    
    AddElement(CodePB.s())
    CodePB.s() + "MenuID.i = EventMenu() ; Pour savoir sur quel menue c'est produis l'évènement."
    
    AddElement(CodePB.s())
    CodePB.s() + "EventType.i = EventType() ; Le type d'évènement qui c'est produis sur le gadget."
    
    AddElement(CodePB.s())
    CodePB.s() + "EventTimer.i = EventTimer() ; Le num�ro du timer ou s'est produit l'évènement (Le temps du minuteur s'est écoulé)."
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    AddElement(CodePB.s())
    CodePB.s() + "Select EventWindows ; Quel Evenement de la fenêtre est survenue."
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    AddElement(CodePB.s())
    CodePB.s() + "Case #PB_Event_Gadget ; Un évènement c'est passé sur un gadget."
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    If GenereCodeEvenementGadget.b = #True
      
      AddElement(CodePB.s())
      CodePB.s() + "Select GadgetID ; Un évènement à eu lieu sur un gadget."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      ; Enumère tous les Gadgets.
      ForEach NomGadgetsReorganiserVB.s()
        
        GadgetType$ = Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\Type
        
        ; Pas de Fenêtre
        ; ni menu ni élements de menu
        ; ni barre d'outils
        ; ni barre de Status ni élément barre de Status
        ; Ni élément de TreeView.
        
        If GadgetType$ <> "Form()" And
           GadgetType$ <> "MenuStrip()" And
           GadgetType$ <> "ContextMenuStrip(Me.components)" And
           GadgetType$ <> "ToolStripMenuItem()" And
           GadgetType$ <> "ToolStrip()" And
           GadgetType$ <> "ToolStripSeparator()" And
           GadgetType$ <> "ToolStripStatusLabel()" And
           GadgetType$ <> "ToolStripProgressBar()" And
           GadgetType$ <> "StatusStrip()" And
           GadgetType$ <> "TreeNodeItem()"
          
          AddElement(CodePB.s())
          CodePB.s() + "Case #" + NomGadgetsReorganiserVB.s()
          
          AddElement(CodePB.s())
          CodePB.s() + ""
          
          GenereEventGadget(NomGadgetsReorganiserVB.s())
          
        EndIf
        
      Next
      
      AddElement(CodePB.s())
      CodePB.s() + "EndSelect"
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
    EndIf
    
    AddElement(CodePB.s())
    CodePB.s() + "Case #PB_Event_Menu ; Un menu a été sélectionné."
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    If GenereCodeEvenementMenu.b = #True
      
      AddElement(CodePB.s())
      CodePB.s() + "Select MenuID ; Un évènement à eu lieu sur un menu."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      ; Enumère tous les élément de menu et bouton de barre d'outil.
      ForEach NomGadgetsReorganiserVB.s()
        
        GadgetType$ = Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\Type
        
        ; Pas de Fenêtre
        ; ni menu
        ; ni barre d'outils
        ; ni barre de Status ni élément barre de Status.
        
        If (GadgetType$ = "ToolStripMenuItem()" Or GadgetType$ = "ToolStripButton()") And
           Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\MenuItemType <> "PTitre" And
           Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\MenuItemType <> "PSubMenu" And
           Gadgets.GadgetInformation(NomGadgetsReorganiserVB.s())\MenuItemType <> "CSubMenu"
            
          AddElement(CodePB.s())
          CodePB.s() + "Case #" + NomGadgetsReorganiserVB.s()
          
          AddElement(CodePB.s())
          CodePB.s() + ""
          
        EndIf
        
      Next
      
      AddElement(CodePB.s())
      CodePB.s() + "EndSelect"
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
    EndIf
    
    If GenereCodeEvenementFenetre.b = #True
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowDrop ; Une oppération Glisser & Déposer s'est terminée sur une fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_GadgetDrop ; Une oppération Glisser & Déposer s'est terminée sur un gadget."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_CloseWindow ; L'icône de fermeture de la fenêtre a été cliquée."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MoveWindowMouse ; Déplacement de la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsLeftButtonDown ; Bouton gauche appuyé avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsLeftButtonUp ; Bouton gauche relaché avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsLeftDoubleClick ; Double clique gauche avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsRightButtonDown ; Bouton droit appuyé avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsRightButtonUp ; Bouton droit relaché avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsRightDoubleClick ; Double clique droit avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsMiddleButtonDown ; Bouton milieux appuyé avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsMiddleButtonUp ; Bouton milieux relaché avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsMiddleDoubleClick ; Double clique milieux avec la souris sur la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_WindowsMouseWheel ; La molètte de la souris tourne."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_SysTray ; Une icône dans la zone SysTray a été cliquée."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_Timer ; Le temps d'un minuteur s'est écoulé."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_Repaint ; Tout ou une partie du contenu de la fenêtre a été détruit et doit être reconstitué."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MoveWindow ; La fenêtre a été déplacée."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MinimizeWindow ; La fenêtre a été minimisée."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MaximizeWindow ; La fenêtre a été maximisée."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_RestoreWindow ; La fenêtre a été restaurée à sa taille normale."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_SizeWindow ; La fenêtre a été redimensionnée."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_ActivateWindow ; La fenêtre a été activée (gain du focus)."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MouseMoveOverTitleBar ; Déplacement de la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_LeftButtonClickOverTitleBar ; Clique gauche avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_LeftButtonUpOverTitleBar ; Bouton gauche relacher avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_LeftButtonDoubleClickOverTitleBar ; Double Clique gauche avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_RightButtonClickOverTitleBar ; Clique droit avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_RightButtonUpOverTitleBar ; Bouton droit relacher avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MiddleButtonDownOverTitleBar ; Bouton milieux appuyer avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MiddleButtonUpOverTitleBar ; Bouton milieux relacher avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MiddleButtonDoubleClickOverTitleBar ; Double Clique milieux avec la souris sur la barre de titre de la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
      AddElement(CodePB.s())
      CodePB.s() + "Case #PB_Event_MouseEnterOrLeaveWindows ; La souris viens d'entrer ou de quitter la fenêtre."
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
    EndIf
    
    AddElement(CodePB.s())
    CodePB.s() + "EndSelect"
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    AddElement(CodePB.s())
    CodePB.s() + "Until EventWindows.i = #PB_Event_CloseWindow ; Termine la boucle de la fenêtre."
    
    AddElement(CodePB.s())
    CodePB.s() + ""
    
    ; "EndIf" pour la condition de création de la fenêtre.
    If GenereCodeGadget.b = #True
      
      AddElement(CodePB.s())
      CodePB.s() + "EndIf"
      
      AddElement(CodePB.s())
      CodePB.s() + ""
      
    EndIf
    
  EndIf
  
  ; Remplace les Constantes se terminant par .Panel1 et .Panel2 par _Panel1 et _Panel2.
  ForEach CodePB.s()
    
    If GenereCodeCommentaire.b = #False And CodePB.s() <> "; Code Généré avec le programme VB To PB." And FindString(CodePB.s(), ";", 1, #PB_String_NoCase)
      CodePB.s() = Mid(CodePB.s(), 1, FindString(CodePB.s(), ";", 1, #PB_String_NoCase) - 2)
    EndIf
    
    If GenereCodeLigneVide.b = #False And CodePB.s() = ""
      DeleteElement(CodePB.s())
      Continue
    EndIf
    
    CodePB.s() = ReplaceString(CodePB.s(), ".Panel1", "_Panel1", #PB_String_NoCase)
    CodePB.s() = ReplaceString(CodePB.s(), ".Panel2", "_Panel2", #PB_String_NoCase)
    
  Next
  
EndProcedure

; Ajoute le code Structuré dans le Tree.
; Ajoute les noms de gadget dans la liste NomGadgetsReorganiserVB.s() de façon Structuré.
Procedure AjoutCodeTreeGadgets(NomGadgetParent$, Noeux.i, NiveauHierarchique.i)
  
  ForEach Gadgets.GadgetInformation(NomGadgetParent$)\NomGadgetsEnfant()
    
    NomGadgetEnfant$ = Gadgets.GadgetInformation(NomGadgetParent$)\NomGadgetsEnfant()
    Gadgets.GadgetInformation(NomGadgetEnfant$)\NiveauHierarchique = NiveauHierarchique.i + 1
    
    AddElement(NomGadgetsReorganiserVB.s())
    NomGadgetsReorganiserVB.s() = NomGadgetEnfant$
    
    AddGadgetItem(#TreeGadget, -1, NomGadgetEnfant$, 0, Noeux.i)
    SetGadgetItemColor(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
    SetGadgetItemData(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, 1)
    
    AddGadgetItem(#TreeGadget, -1, "Niveau hiérarchique: ", 0, Noeux.i + 1)
    AddGadgetItem(#TreeGadget, -1, Str(NiveauHierarchique.i), 0, Noeux.i + 2)
    
    AddGadgetItem(#TreeGadget, -1, "X: ", 0, Noeux.i + 1)
    AddGadgetItem(#TreeGadget, -1, Str(Gadgets.GadgetInformation(NomGadgetEnfant$)\X.i), 0, Noeux.i + 2)
    
    AddGadgetItem(#TreeGadget, -1, "Y: ", 0, Noeux.i + 1)
    AddGadgetItem(#TreeGadget, -1, Str(Gadgets.GadgetInformation(NomGadgetEnfant$)\Y.i), 0, Noeux.i + 2)
    
    AddGadgetItem(#TreeGadget, -1, "Largeur: ", 0, Noeux.i + 1)
    AddGadgetItem(#TreeGadget, -1, Str(Gadgets.GadgetInformation(NomGadgetEnfant$)\Largeur.i), 0, Noeux.i + 2)
    
    AddGadgetItem(#TreeGadget, -1, "Hauteur: ", 0, Noeux.i + 1)
    AddGadgetItem(#TreeGadget, -1, Str(Gadgets.GadgetInformation(NomGadgetEnfant$)\Hauteur.i), 0, Noeux.i + 2)
    
    AddGadgetItem(#TreeGadget, -1, "Type: ", 0, Noeux.i + 1)
    AddGadgetItem(#TreeGadget, -1, Gadgets.GadgetInformation(NomGadgetEnfant$)\Type, 0, Noeux.i + 2)
    
    AddGadgetItem(#TreeGadget, -1, "Texte: ", 0, Noeux.i + 1)
    AddGadgetItem(#TreeGadget, -1, Gadgets.GadgetInformation(NomGadgetEnfant$)\Texte, 0, Noeux.i + 2)
    
    AddGadgetItem(#TreeGadget, -1, "Enfants: ", 0, Noeux.i + 1)
    
    If ListSize(Gadgets.GadgetInformation(NomGadgetEnfant$)\NomGadgetsEnfant()) = 0
      AddGadgetItem(#TreeGadget, -1, "Aucun", 0, Noeux.i + 2)
      
    Else
      
      ; Est ce une "ListView" ?
      If Gadgets.GadgetInformation(NomGadgetEnfant$)\Type = "ListView()"
        
        ; Traitement de toutes les colonnes ainsi que les items et SubItems de la ListView.
        
        ; Sauvegarde la position dans la Map.
        PushMapPosition(Gadgets.GadgetInformation())
        
        ListViewNombreColonne.i = 0
        ListViewNombreElement.i = 0
        
        NomColonnes$ = ""
        NomItems$ = ""
        
        If ListSize(Gadgets.GadgetInformation(NomGadgetEnfant$)\NomGadgetsEnfant()) > 0
          
          ; Recherche le nombre de colonne et d'item de la ListView0.
          ForEach Gadgets.GadgetInformation(NomGadgetEnfant$)\NomGadgetsEnfant()
            
            NomEnfant$ = Gadgets.GadgetInformation(NomGadgetEnfant$)\NomGadgetsEnfant()
            
            If Gadgets.GadgetInformation(NomEnfant$)\Type = "ColumnHeader()"
              ListViewNombreColonne.i + 1
              NomColonnes$ + NomEnfant$ + ", "
              
            ElseIf Gadgets.GadgetInformation(NomEnfant$)\Type = "ListViewElement()"
              ListViewNombreElement.i + 1 
              NomItems$ + NomEnfant$ + ", "
              
            EndIf
            
          Next
          
          ; Enlève les virgules à la fin.
          NomColonnes$ = Mid(NomColonnes$, 1, Len(NomColonnes$) - 2)
          NomItems$ = Mid(NomItems$, 1, Len(NomItems$) - 2)
          
        EndIf
        
        ; Ajoute le lien "Colonnes: " dans le lien "Enfants: ".
        AddGadgetItem(#TreeGadget, -1, "Colonnes: ", 0, Noeux.i + 2)
        
        ; Si il n'y a aucune colonnes, Ajoute le lien "Aucune" dans le lien "Colonnes: ".
        If ListViewNombreColonne.i = 0
          AddGadgetItem(#TreeGadget, -1, "Aucune", 0, Noeux.i + 3)
          
        Else ; Ajoute les colonnes et leurs informations.
          
          For M = 1 To CountString(NomColonnes$, ", ") + 1
            
            ColonneNom$ = StringField(NomColonnes$, M, ", ")
            
            AddGadgetItem(#TreeGadget, -1, ColonneNom$, 0, Noeux.i + 3)
            SetGadgetItemColor(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
            SetGadgetItemData(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, 1)
            
            AddGadgetItem(#TreeGadget, -1, "Niveau hiérarchique: ", 0, Noeux.i + 4)
            AddGadgetItem(#TreeGadget, -1, Str(NiveauHierarchique.i + 1), 0, Noeux.i + 5)
            
            Gadgets.GadgetInformation(ColonneNom$)\NiveauHierarchique = NiveauHierarchique.i + 1
            
            AddGadgetItem(#TreeGadget, -1, "Largeur: ", 0, Noeux.i + 4)
            AddGadgetItem(#TreeGadget, -1, Str(Gadgets.GadgetInformation(ColonneNom$)\Largeur.i), 0, Noeux.i + 5)
            
            AddGadgetItem(#TreeGadget, -1, "Type: ", 0, Noeux.i + 4)
            AddGadgetItem(#TreeGadget, -1, Gadgets.GadgetInformation(ColonneNom$)\Type, 0, Noeux.i + 5)
            
            AddGadgetItem(#TreeGadget, -1, "Texte: ", 0, Noeux.i + 4)
            AddGadgetItem(#TreeGadget, -1, Gadgets.GadgetInformation(ColonneNom$)\Texte, 0, Noeux.i + 5)
            
          Next
          
        EndIf
        
        ; Traite les élements de la ListView.
        
        ; Ajoute le lien "Items: " dans le lien "Enfants: " après "Colonnes: ".
        AddGadgetItem(#TreeGadget, -1, "Items: ", 0, Noeux.i + 2)
        
        ; Si il n'y a aucun Item, Ajoute le lien "Aucun" dans le lien "Items: ".
        If ListViewNombreElement.i = 0
          AddGadgetItem(#TreeGadget, -1, "Aucun", 0, Noeux.i + 3)
          
        Else ; Sinon traite les sous élements de la ListView car si il n'y a pas d'items, il n'y a forcement pas d'éléments.
          
          For M = 1 To CountString(NomItems$, ", ") + 1
            
            ItemNom$ = StringField(NomItems$, M, ", ")
            
            AddGadgetItem(#TreeGadget, -1, ItemNom$, 0, Noeux.i + 3)
            SetGadgetItemColor(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
            SetGadgetItemData(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, 1)
            
            AddGadgetItem(#TreeGadget, -1, "Niveau hiérarchique: ", 0, Noeux.i + 4)
            AddGadgetItem(#TreeGadget, -1, Str(NiveauHierarchique.i + 2), 0, Noeux.i + 5)
            
            Gadgets.GadgetInformation(ItemNom$)\NiveauHierarchique = NiveauHierarchique.i + 2
            
            AddGadgetItem(#TreeGadget, -1, "Type: ", 0, Noeux.i + 4)
            AddGadgetItem(#TreeGadget, -1, Gadgets.GadgetInformation(ItemNom$)\Type, 0, Noeux.i + 5)
            
            ; Traite les sous élements de la ListView.
            
            ; Ajoute le lien "Enfants: " dans le lien ItemNom$ après "Type: ".
            AddGadgetItem(#TreeGadget, -1, "Enfants: ", 0, Noeux.i + 4)
            
            ; Si il n'y a aucun SubElement, Ajoute le lien "Aucun" dans le lien "Enfants: ".
            If ListViewNombreElement.i = 0
              AddGadgetItem(#TreeGadget, -1, "Aucun", 0, Noeux.i + 5)
              
            Else ; Sinon traite les sous élements.
              
              ; Enumère tous les SubItems de l'élément courant de la ListView.
              ForEach Gadgets.GadgetInformation(ItemNom$)\NomGadgetsEnfant()
                
                NomSubItem$ = Gadgets.GadgetInformation(ItemNom$)\NomGadgetsEnfant()
                
                AddGadgetItem(#TreeGadget, -1, NomSubItem$, 0, Noeux.i + 5)
                SetGadgetItemColor(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, #PB_Gadget_FrontColor, RGB(0, 0, 255))
                SetGadgetItemData(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, 1)
                
                AddGadgetItem(#TreeGadget, -1, "Niveau hiérarchique: ", 0, Noeux.i + 6)
                AddGadgetItem(#TreeGadget, -1, Str(NiveauHierarchique.i + 3), 0, Noeux.i + 7)
                
                Gadgets.GadgetInformation(NomSubItem$)\NiveauHierarchique = NiveauHierarchique.i + 3
                
                AddGadgetItem(#TreeGadget, -1, "Type: ", 0, Noeux.i + 6)
                AddGadgetItem(#TreeGadget, -1, Gadgets.GadgetInformation(NomSubItem$)\Type, 0, Noeux.i + 7)
                
                AddGadgetItem(#TreeGadget, -1, "Texte: ", 0, Noeux.i + 6)
                AddGadgetItem(#TreeGadget, -1, Gadgets.GadgetInformation(NomSubItem$)\Texte, 0, Noeux.i + 7)
                
              Next
              
            EndIf
            
          Next
          
        EndIf
        
        ; Restaure la position de la Map.
        PopMapPosition(Gadgets.GadgetInformation())
        
      Else
        AjoutCodeTreeGadgets(NomGadgetEnfant$, Noeux.i + 2, NiveauHierarchique.i + 1)
        
      EndIf
      
    EndIf
    
  Next
  
EndProcedure

; Ajoute le code Structuré dans le Tree.
; Ajoute le nom de la fenêtre dans la liste NomGadgetsReorganiserVB.s().
Procedure AjoutCodeTreeFenetre()
  
  ClearList(NomGadgetsReorganiserVB.s())
  ClearGadgetItems(#TreeGadget)
  
  ; Si il y a un MonthCalendar, lui atribut une taille fixe car elle n'existe pas dans le code.
  ForEach Gadgets.GadgetInformation()
    
    GadgetType$ = Gadgets.GadgetInformation(MapKey(Gadgets.GadgetInformation()))\Type
    
    If GadgetType$ = "MonthCalendar()"
      Gadgets.GadgetInformation(MapKey(Gadgets.GadgetInformation()))\Largeur = 227
      Gadgets.GadgetInformation(MapKey(Gadgets.GadgetInformation()))\Hauteur = 162
    EndIf
    
  Next
  
  AddGadgetItem(#TreeGadget, -1, "Fenêtre", 0, 0)
  
  ; Récupère le Nom de la fenêtre.
  ForEach Gadgets.GadgetInformation()
    
    If Gadgets.GadgetInformation()\Type = "Form()"
      
      NomFenetre$ = MapKey(Gadgets.GadgetInformation())
      
      AddElement(NomGadgetsReorganiserVB.s())
      NomGadgetsReorganiserVB.s() = NomFenetre$
      
      FenetreX.i = Gadgets.GadgetInformation(NomFenetre$)\X
      FenetreY.i = Gadgets.GadgetInformation(NomFenetre$)\Y
      FenetreLargeur.i = Gadgets.GadgetInformation(NomFenetre$)\Largeur
      FenetreHauteur.i = Gadgets.GadgetInformation(NomFenetre$)\Hauteur
      FenetreType$ = Gadgets.GadgetInformation(NomFenetre$)\Type
      FenetreTexte$ = Gadgets.GadgetInformation(NomFenetre$)\Texte
      
      AddGadgetItem(#TreeGadget, -1, NomFenetre$, 0, 1)
      SetGadgetItemColor(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, #PB_Gadget_FrontColor, RGB(255, 0, 0))
      SetGadgetItemData(#TreeGadget, CountGadgetItems(#TreeGadget) - 1, 1)
      
      AddGadgetItem(#TreeGadget, -1, "X: ", 0, 2)
      AddGadgetItem(#TreeGadget, -1, Str(FenetreX.i), 0, 3)
      
      AddGadgetItem(#TreeGadget, -1, "Y: ", 0, 2)
      AddGadgetItem(#TreeGadget, -1, Str(FenetreY.i), 0, 3)
      
      AddGadgetItem(#TreeGadget, -1, "Largeur: ", 0, 2)
      AddGadgetItem(#TreeGadget, -1, Str(FenetreLargeur.i), 0, 3)
      
      AddGadgetItem(#TreeGadget, -1, "Hauteur: ", 0, 2)
      AddGadgetItem(#TreeGadget, -1, Str(FenetreHauteur.i), 0, 3)
      
      AddGadgetItem(#TreeGadget, -1, "Type: ", 0, 2)
      AddGadgetItem(#TreeGadget, -1, FenetreType$, 0, 3)
      
      AddGadgetItem(#TreeGadget, -1, "Texte: ", 0, 2)
      AddGadgetItem(#TreeGadget, -1, FenetreTexte$, 0, 3)
      
      AddElement(Gadgets.GadgetInformation(NomFenetre$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomFenetre$)\CommentaireCommande() = "; Code de la Fenêtre."
      
      AddElement(Gadgets.GadgetInformation(NomFenetre$)\Commande())
      Gadgets.GadgetInformation(NomFenetre$)\Commande() = "If OpenWindow(#" + NomFenetre$ + ", " + Str(FenetreX.i) + ", " + Str(FenetreY.i) + ", " + Str(FenetreLargeur.i) + ", " + Str(FenetreHauteur.i) + ", " + Chr(34) + FenetreTexte$ + Chr(34) + ",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)"
      
      AddElement(Gadgets.GadgetInformation(NomFenetre$)\CommentaireCommande())
      Gadgets.GadgetInformation(NomFenetre$)\CommentaireCommande() = "; Dimensions Minimale et Maximale par défaut de la Fenêtre."
      
      AddElement(Gadgets.GadgetInformation(NomFenetre$)\Commande())
      Gadgets.GadgetInformation(NomFenetre$)\Commande() = "WindowBounds(#" + NomFenetre$ + ", 400, 300, #PB_Ignore, #PB_Ignore)"
      
      Break
      
    EndIf
    
  Next
  
  Gadgets.GadgetInformation(NomFenetre$)\NiveauHierarchique = 0
  AddGadgetItem(#TreeGadget, -1, "Enfants: ", 0, 2)
  
  If ListSize(Gadgets.GadgetInformation(NomFenetre$)\NomGadgetsEnfant()) = 0
    AddGadgetItem(#TreeGadget, -1, "Aucun", 0, 3)
  Else
    AjoutCodeTreeGadgets(NomFenetre$, 3, 1)
  EndIf
  
EndProcedure

; Actualise la liste de gadget car certaon ont changer de place (SpliterGadget).
Procedure ActualiseNomGadgetsReorganiserVB()
  
  ClearList(NomGadgetsReorganiserVB.s())
  
  ; Parcourt le Tree.
  For Index = 1 To CountGadgetItems(#TreeGadget)
    
    If GetGadgetItemData(#TreeGadget, Index) = 1
      
      AddElement(NomGadgetsReorganiserVB.s())
      NomGadgetsReorganiserVB.s() = GetGadgetItemText(#TreeGadget, Index)
      
    EndIf
    
  Next
  
EndProcedure

; Procedure pour savoir si la souris est sur un gadget
Procedure.l SiSourisSurGadget(NumeroGadget.l)
  If IsGadget(NumeroGadget.l)
    GetWindowRect_(GadgetID(NumeroGadget), GadgetRect.RECT) 
    GetCursorPos_(mouse.POINT) 
    If mouse \ x >= GadgetRect \ Left And mouse \ x <= GadgetRect \ right And mouse \ y >= GadgetRect \ Top And mouse \ y <= GadgetRect \ bottom
      ProcedureReturn #True 
    Else 
      ProcedureReturn #False 
    EndIf 
  EndIf
EndProcedure

; La commande est à placer dans la boucle de la fenêtre apres la commandes WaitWindowEvent() ou EventWindow()
Procedure.l GestionMenuContextuelEditeur(NumeroFenetre.l, EventWindows.l, NumeroGadget.l, MenuContextuel.l)
  Static InterupteurCliqueDroitGadget.b
  
  If IsGadget(NumeroGadget.l)
    If SiSourisSurGadget(NumeroGadget.l) And EventWindows.l = 516 ; Bouton droit appuiler avec la souris
      InterupteurCliqueDroitGadget.b = #True
      ProcedureReturn 1
    ElseIf SiSourisSurGadget(NumeroGadget.l) And (EventWindows.l = 517 And InterupteurCliqueDroitGadget.b = #True) ; Bouton droit relacher avec la souris
      InterupteurCliqueDroitGadget.b = #False
      If IsMenu(MenuContextuel.l)
        DisplayPopupMenu(MenuContextuel.l, WindowID(NumeroFenetre.l))
        ProcedureReturn 1
      EndIf
    ElseIf Not SiSourisSurGadget(NumeroGadget.l) And (EventWindows.l = 517 And InterupteurCliqueDroitGadget.b = #True) ; Bouton droit relacher avec la souris
      InterupteurCliqueDroitGadget.b = #False
      ProcedureReturn 1
    EndIf
  Else
    If EventWindows.l = 516 ; Bouton droit appuiler avec la souris
      InterupteurCliqueDroitGadget.b = #True
      ProcedureReturn 1
    ElseIf (EventWindows.l = 517 And InterupteurCliqueDroitGadget.b = #True) ; Bouton droit relacher avec la souris
      InterupteurCliqueDroitGadget.b = #False
      If IsMenu(MenuContextuel.l)
        DisplayPopupMenu(MenuContextuel.l, WindowID(NumeroFenetre.l))
        ProcedureReturn 1
      EndIf
    ElseIf Not (EventWindows.l = 517 And InterupteurCliqueDroitGadget.b = #True) ; Bouton droit relacher avec la souris
      InterupteurCliqueDroitGadget.b = #False
      ProcedureReturn 1
    EndIf
  EndIf
  
EndProcedure

; Procédure pour Quitter le programme.
Procedure Quitter()
  
  If GetWindowState(#FenetreVBToPB) = #PB_Window_Normal
    WindowFlags = 0
  ElseIf GetWindowState(#FenetreVBToPB) = #PB_Window_Maximize
    WindowFlags = 1
  EndIf
  
  CreatePreferences("Paramètres\Préférences.txt")
  
  PreferenceGroup("WindowsMain")
  WritePreferenceInteger("WindowsX", WindowX.i)
  WritePreferenceInteger("WindowsY", WindowY.i)
  WritePreferenceInteger("WindowsWidth", WindowWidth.i)
  WritePreferenceInteger("WindowsHeight", WindowHeight.i)
  WritePreferenceInteger("WindowsFlags", WindowFlags.i)
  
  PreferenceGroup("WindowsPreferences")
  WritePreferenceInteger("CompresseCode", CompresseCode.b)
  WritePreferenceInteger("GenereCodeLigneVide", GenereCodeLigneVide.b)
  WritePreferenceInteger("GenereCodeCommentaire", GenereCodeCommentaire.b)
  WritePreferenceInteger("GenereCodeBoucleEvenement", GenereCodeBoucleEvenement.b)
  WritePreferenceInteger("GenereCodeEvenementMenu", GenereCodeEvenementMenu.b)
  WritePreferenceInteger("GenereCodeEventTypeGadget", GenereCodeEventTypeGadget.b)
  WritePreferenceInteger("GenereCodeGetGadgetGadget", GenereCodeGetGadgetGadget.b)
  WritePreferenceInteger("GenereCodeEvenementGadget", GenereCodeEvenementGadget.b)
  WritePreferenceInteger("GenereCodeEvenementFenetre", GenereCodeEvenementFenetre.b)
  WritePreferenceInteger("GenereCodeGadget", GenereCodeGadget.b)
  WritePreferenceInteger("GenereCodeEnumerationConstantes", GenereCodeEnumerationConstantes.b)
  
  PreferenceGroup("Langage")
  WritePreferenceString("Langage", Langage$)
  
  ClosePreferences()
  
  If LangageChanger.b = #True
    RunProgram("Vb To Pb.exe")
  EndIf
  
  End
  
EndProcedure

; Interface programme principal.
Procedure FenetreVBToPB()
  
  IsDirectory(CreateDirectory("Paramètres"))
  
  OpenPreferences("Paramètres\Préférences.txt")
  PreferenceGroup("WindowsMain")
  WindowX.i = ReadPreferenceInteger("WindowsX", 327)
  WindowY.i = ReadPreferenceInteger("WindowsY", 177)
  WindowWidth.i = ReadPreferenceInteger("WindowsWidth", 800)
  WindowHeight.i = ReadPreferenceInteger("WindowsHeight", 600)
  WindowFlags.i = ReadPreferenceInteger("WindowsFlags", 0)
  
  PreferenceGroup("WindowsPreferences")
  CompresseCode.b = ReadPreferenceInteger("CompresseCode", 1)
  GenereCodeLigneVide.b = ReadPreferenceInteger("GenereCodeLigneVide", 1)
  GenereCodeCommentaire.b = ReadPreferenceInteger("GenereCodeCommentaire", 1)
  GenereCodeBoucleEvenement.b = ReadPreferenceInteger("GenereCodeBoucleEvenement", 1)
  GenereCodeEvenementMenu.b = ReadPreferenceInteger("GenereCodeEvenementMenu", 1)
  GenereCodeEventTypeGadget.b = ReadPreferenceInteger("GenereCodeEventTypeGadget", 1)
  GenereCodeGetGadgetGadget.b = ReadPreferenceInteger("GenereCodeGetGadgetGadget", 1)
  GenereCodeEvenementGadget.b = ReadPreferenceInteger("GenereCodeEvenementGadget", 1)
  GenereCodeEvenementFenetre.b = ReadPreferenceInteger("GenereCodeEvenementFenetre", 1)
  GenereCodeGadget.b = ReadPreferenceInteger("GenereCodeGadget", 1)
  GenereCodeEnumerationConstantes.b = ReadPreferenceInteger("GenereCodeEnumerationConstantes", 1)
  
  PreferenceGroup("Langage")
  Langage$ = ReadPreferenceString("Langage", "Français")
  
  ClosePreferences()
  
  Select WindowFlags.i
    Case 0:
      WindowFlags.i = #PB_Window_Normal
    Case 1:
      WindowFlags.i = #PB_Window_Maximize
    Default:
      WindowFlags.i = #PB_Window_Normal
  EndSelect
  
  WindowFlags.i = #PB_Window_SystemMenu|WindowFlags.i|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget
  
  If OpenWindow(#FenetreVBToPB, WindowX.i, WindowY.i, WindowWidth.i, WindowHeight.i, "VB To PB - V" + VersionProgramme$, WindowFlags.i)
    WindowBounds(#FenetreVBToPB, 400, 300, #PB_Ignore, #PB_Ignore) 
    
    If Langage$ = "Français"
      ; Menu.
      If CreateImageMenu(#Menu, WindowID(#FenetreVBToPB))
        MenuTitle("Fichier")
        MenuItem(#Menu_Ouvrir, "Ouvrir" + Chr(9) + "Ctrl+O", ImageID(CatchImage(#PB_Any, ?Ouvrir_png_start)))
        MenuBar() 
        MenuItem(#Menu_Quitter, "Quitter" + Chr(9) + "Ctrl+F", ImageID(CatchImage(#PB_Any, ?Quitter_png_start)))
        MenuTitle("Préférences")
        MenuItem(#Menu_Preferences, "Préférences", ImageID(CatchImage(#PB_Any, ?Prfrences_png_start)))
        MenuTitle("Aide")
        MenuItem(#Menu_Aide, "Aide...", ImageID(CatchImage(#PB_Any, ?Aide_png_start)))
        MenuItem(#Menu_APropos, "A Propos...", ImageID(CatchImage(#PB_Any, ?A_Propos_png_start)))
      EndIf
      
    ElseIf Langage$ = "English"
      ; Menu.
      If CreateImageMenu(#Menu, WindowID(#FenetreVBToPB))
        MenuTitle("File")
        MenuItem(#Menu_Ouvrir, "Open" + Chr(9) + "Ctrl+O", ImageID(CatchImage(#PB_Any, ?Ouvrir_png_start)))
        MenuBar() 
        MenuItem(#Menu_Quitter, "Exit" + Chr(9) + "Ctrl+F", ImageID(CatchImage(#PB_Any, ?Quitter_png_start)))
        MenuTitle("Preferences")
        MenuItem(#Menu_Preferences, "Preferences", ImageID(CatchImage(#PB_Any, ?Prfrences_png_start)))
        MenuTitle("Help")
        MenuItem(#Menu_Aide, "Help...", ImageID(CatchImage(#PB_Any, ?Aide_png_start)))
        MenuItem(#Menu_APropos, "About....", ImageID(CatchImage(#PB_Any, ?A_Propos_png_start)))
      EndIf
      
    EndIf
    
    If Langage$ = "Français"
      
      ; Menu Contextuel Tree.
      If CreatePopupImageMenu(#MenuContextuelTree)
        MenuItem(#MenuContextuelTreeOuvrirTous, "Ouvrir Tous les éléments du Parent", ImageID(CatchImage(#PB_Any, ?Ouvrir_tous_png_start)))
        MenuItem(#MenuContextuelTreeFermerTous, "Fermer Tous les éléments du Parent", ImageID(CatchImage(#PB_Any, ?Fermer_tous_png_start)))
        MenuBar()
        MenuItem(#MenuContextuelTreeConvertirCode, "Convertir le code en Pure Basic...", ImageID(CatchImage(#PB_Any, ?sourceicone910116_png_start)))
      EndIf
      
      If CreatePopupImageMenu(#MenuContextuelCode)
        MenuItem(#MenuContextuelCodeCopier, "Copier", ImageID(CatchImage(#PB_Any, ?Copier_png_start)))
      EndIf
      
      
    ElseIf Langage$ = "English"
      
      ; Menu Contextuel Tree.
      If CreatePopupImageMenu(#MenuContextuelTree)
        MenuItem(#MenuContextuelTreeOuvrirTous, "Open All Parent Elements", ImageID(CatchImage(#PB_Any, ?Ouvrir_tous_png_start)))
        MenuItem(#MenuContextuelTreeFermerTous, "Close All Parent Elements", ImageID(CatchImage(#PB_Any, ?Fermer_tous_png_start)))
        MenuBar()
        MenuItem(#MenuContextuelTreeConvertirCode, "Convert the code to Pure Basic....", ImageID(CatchImage(#PB_Any, ?sourceicone910116_png_start)))
      EndIf
      
      If CreatePopupImageMenu(#MenuContextuelCode)
        MenuItem(#MenuContextuelCodeCopier, "Copy", ImageID(CatchImage(#PB_Any, ?Copier_png_start)))
      EndIf
      
    EndIf
    
    AddKeyboardShortcut(#FenetreVBToPB, #PB_Shortcut_Control | #PB_Shortcut_O, #Menu_Ouvrir)
    AddKeyboardShortcut(#FenetreVBToPB, #PB_Shortcut_Control | #PB_Shortcut_F, #Menu_Quitter)
    
    TreeGadget(#TreeGadget, 0, 0, 0, 0)
    PanelGadget(#PanelGadget, 0, 0, 0, 0)
    
    If Langage$ = "Français"
      
      AddGadgetItem(#PanelGadget, -1, "Information", ImageID(CatchImage(#PB_Any, ?Information_png_start)))
      EditorGadget(#EditorGadgetInformation, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
      AddGadgetItem(#PanelGadget, -1, "Avertissement", ImageID(CatchImage(#PB_Any, ?Avertissement_png_start)))
      EditorGadget(#EditorGadgetAvertissement, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
      AddGadgetItem(#PanelGadget, -1, "Erreur", ImageID(CatchImage(#PB_Any, ?Erreur_png_start)))
      EditorGadget(#EditorGadgetErreur, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
      AddGadgetItem(#PanelGadget, -1, "Code", ImageID(CatchImage(#PB_Any, ?sourceicone910116_png_start)))
      EditorGadget(#EditorGadgetCode, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
    ElseIf Langage$ = "English"
      
      AddGadgetItem(#PanelGadget, -1, "Information", ImageID(CatchImage(#PB_Any, ?Information_png_start)))
      EditorGadget(#EditorGadgetInformation, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
      AddGadgetItem(#PanelGadget, -1, "Warning", ImageID(CatchImage(#PB_Any, ?Avertissement_png_start)))
      EditorGadget(#EditorGadgetAvertissement, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
      AddGadgetItem(#PanelGadget, -1, "Error", ImageID(CatchImage(#PB_Any, ?Erreur_png_start)))
      EditorGadget(#EditorGadgetErreur, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
      AddGadgetItem(#PanelGadget, -1, "Code", ImageID(CatchImage(#PB_Any, ?sourceicone910116_png_start)))
      EditorGadget(#EditorGadgetCode, 0, 0, 0, 0, #PB_Editor_ReadOnly)
      
    EndIf
    
    SetGadgetColor(#EditorGadgetInformation, #PB_Gadget_FrontColor, RGB(0, 150, 0))
    SetGadgetColor(#EditorGadgetAvertissement, #PB_Gadget_FrontColor, RGB(255, 100, 0))
    SetGadgetColor(#EditorGadgetErreur, #PB_Gadget_FrontColor, RGB(200, 0, 0))
    SetGadgetColor(#EditorGadgetCode, #PB_Gadget_FrontColor, RGB(0, 0, 255))
    
    Repeat ; Départ des évènements de boucle.
      
      Event = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la fenêtre.
      EventWindow = EventWindow(); La fenêtre oû l'évènement c'est produit.
      EventGadget = EventGadget(); Pour savoir sur quel gadget c'est produis l'évènement.
      EventMenu = EventMenu()    ; Pour savoir sur quel menue c'est produis l'évènement.
      EventType = EventType()    ; Le type d'évènement qui c'est produis sur le gadget.
      GestionMenuContextuelEditeur(#FenetreVBToPB, Event, #EditorGadgetCode, #MenuContextuelCode)
      
      Select EventWindow
          
        Case #FenetreVBToPB
          
          Select Event
              
            Case #PB_Event_Gadget
              
              Select EventGadget
                  
                Case #TreeGadget
                  
                  Select EventType
                      
                    Case #PB_EventType_LeftClick
                      
                      If SauvegardeElementCourant.i <> GetGadgetState(#TreeGadget)
                        SauvegardeElementCourant.i = GetGadgetState(#TreeGadget)
                        
                        If GetGadgetItemData(#TreeGadget, GetGadgetState(#TreeGadget)) = 1
                          
                          If FindMapElement(Gadgets.GadgetInformation(), GetGadgetItemText(#TreeGadget, GetGadgetState(#TreeGadget)))
                            
                            NomGadget$ = MapKey(Gadgets.GadgetInformation())
                            CodeEditeur$ = ""
                            
                            ForEach Gadgets.GadgetInformation(NomGadget$)\Commande()
                              
                              SelectElement(Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande(), ListIndex(Gadgets.GadgetInformation(NomGadget$)\Commande()))
                              
                              CodeEditeur$ + Gadgets.GadgetInformation(NomGadget$)\CommentaireCommande() + Chr(13) + Chr(10)
                              CodeEditeur$ + Gadgets.GadgetInformation(NomGadget$)\Commande() + Chr(13) + Chr(10)
                              CodeEditeur$ + Chr(13) + Chr(10)
                              
                            Next
                            
                            If CodeEditeur$ <> SauvegardeEditeurCode$
                              ClearGadgetItems(#EditorGadgetCode)
                              AddGadgetItem(#EditorGadgetCode, -1, CodeEditeur$)
                              SauvegardeEditeurCode$ = CodeEditeur$
                            EndIf
                            
                          EndIf
                          
                        EndIf
                        
                      EndIf 
                      
                    Case #PB_EventType_RightClick
                      DisplayPopupMenu(#MenuContextuelTree, WindowID(#FenetreVBToPB)) ; On affiche le menu contextuel du Tree.
                      
                  EndSelect
                  
              EndSelect
              
            Case #PB_Event_Menu
              
              Select EventMenu
                  
                Case #Menu_Ouvrir
                  
                  ; Lis et Nettoie le code, Recense tous les Gadgets ainsi que leurs Caractèristiques.
                  If LectureFichier()
                    
                    ClearGadgetItems(#EditorGadgetInformation)
                    ClearGadgetItems(#EditorGadgetAvertissement)
                    ClearGadgetItems(#EditorGadgetErreur)
                    
                    NettoyageCode()
                    RecensementGadget()
                    DecoupageCode()
                    ChercheSplitContainerEnfants()
                    ReorganiseGadgetsEnfantFenetre()
                    ChercheProchainGadgets()
                    ReorganiseGadgetsEnfantGadgetParent()
                    AjoutCodeTreeFenetre()
                    ActualiseNomGadgetsReorganiserVB()
                    
                    GenerationCodePB()
                    
;                     ForEach CodeVB.s()
;                       Debug CodeVB.s()
;                     Next
;                     
                  EndIf
                  
                Case #Menu_Quitter
                  
                  If Langage$ = "Français"
                    
                    Quitter = MessageRequester("Avertissement", "      Vous êtes sur de vouloir quitter ?", 52)
                    
                  ElseIf Langage$ = "English"
                    
                    Quitter = MessageRequester("Warning", "Are you sure you want to Exit ? ", 52)
                    
                  EndIf
                  
                  If Quitter = 6 ; Oui
                    Quitter()
                  EndIf
                  
                Case #Menu_Preferences
                  
                  If Langage$ = "Français"
                    
                  If OpenWindow(#FenetrePreferences, 0, 0, 350, 388, "Préférences VB to PB...",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered) ; Code de la Fenêtre.
                    
                    TextGadget(#TexteInfoLanguage, 12, 12, WindowWidth(#FenetrePreferences, #PB_Window_InnerCoordinate) - 24, 15, "Langue du Programme:", #PB_Text_Center) ; TextGadget
                    ComboBoxGadget(#ComboBoxLangage, 12, 30, WindowWidth(#FenetrePreferences, #PB_Window_InnerCoordinate) - 24, 20) ; ComboBoxGadget
                    AddGadgetItem(#ComboBoxLangage, -1, "Français")
                    AddGadgetItem(#ComboBoxLangage, -1, "English")
                    
                    SetGadgetState(#ComboBoxLangage, 0)
                    
                    CheckBoxGadget(#CheckBoxCompresseCode, 12, 306, 173, 17, "Condenser le code un maximum", 0) ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeLigneVide, 12, 282, 236, 17, "Generer des Lignes Vides pour aérer le code", 0) ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeCommentaire, 12, 258, 284, 17, "Generer le Code des Commentaires de chaque Gadget", 0) ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeBoucleEvenement, 12, 234, 309, 17, "Generer le Code de la Boucle des Evenements de le fenêtre", 0) ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEvenementMenu, 12, 210, 240, 17, "Generer le Code des Evenements des Menus", 0)                    ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEventTypeGadget, 12, 186, 332, 17, "Generer le Code des Evenements EventType de chaque Gadget", 0) ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeGetGadgetGadget, 12, 162, 236, 17, "Generer le Code GetGadget...() des Gadgets", 0)                ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEvenementGadget, 12, 138, 248, 17, "Generer le Code des Evenements des Gadgets", 0)                 ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEvenementFenetre, 12, 114, 250, 17, "Generer le Code des Evenements de la Fenêtre", 0)              ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeGadget, 12, 90, 166, 17, "Generer le Code des Gadgets", 0)                                         ; CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEnumerationConstantes, 12, 67, 266, 17, "Generer le Code d'Enumeration des Constantes PB", 0)      ; CheckBoxGadget.
                    
                    GadgetToolTip(#CheckBoxCompresseCode, "Rassemble sur une même Ligne la Commande ainsi que le Commentaire pour Condencer le code.")
                    GadgetToolTip(#CheckBoxGenereCodeLigneVide, "Ajoute des Lignes Vides dans le Code entre les Groupe d'éléments le constituant.)")
                    GadgetToolTip(#CheckBoxGenereCodeCommentaire, "Ajoute des Commentaires sur chaque Gadget pour savoir à quoi cela correspont.")
                    GadgetToolTip(#CheckBoxGenereCodeBoucleEvenement, "Créer la Boucle d'Evenements propre à la fenêtre")
                    GadgetToolTip(#CheckBoxGenereCodeEvenementMenu, "Créer le Code des Evenements permetant d'Interagir avec les Menus.")
                    GadgetToolTip(#CheckBoxGenereCodeEventTypeGadget, "Créer le Code des Types des Evenements des Gadgets pour Interagir d'avantage avec eux.")
                    GadgetToolTip(#CheckBoxGenereCodeGetGadgetGadget, "Ajoute des Commandes permetant de récupérer des informations sur les Gadgets.")
                    GadgetToolTip(#CheckBoxGenereCodeEvenementGadget, "Créer le Code des Evenements permetant d'Interagir avec les Gadgets.")
                    GadgetToolTip(#CheckBoxGenereCodeEvenementFenetre, "Créer le Code des Evenements permetant d'Interagir avec la Fenêtre.")
                    GadgetToolTip(#CheckBoxGenereCodeGadget, "Génère le Code de chaque Gadget permetant de les créer sur la fenêtre.")
                    GadgetToolTip(#CheckBoxGenereCodeEnumerationConstantes, "Créer le Code d'Enumération des Identifiants de chaque Gadget.")
                    
                    ButtonGadget(#ButtonAnnulerPreferences, 171, 338, 91, 35, "Annuler", 0) ; Bouton.
                    ButtonGadget(#ButtonValiderPreferences, 73, 338, 88, 35, "Valider", 0)  ; Bouton.
                    
                    SetGadgetState(#CheckBoxCompresseCode, CompresseCode.b)
                    SetGadgetState(#CheckBoxGenereCodeLigneVide, GenereCodeLigneVide.b)
                    SetGadgetState(#CheckBoxGenereCodeCommentaire, GenereCodeCommentaire.b)
                    SetGadgetState(#CheckBoxGenereCodeBoucleEvenement, GenereCodeBoucleEvenement.b)
                    SetGadgetState(#CheckBoxGenereCodeEvenementMenu, GenereCodeEvenementMenu.b)
                    SetGadgetState(#CheckBoxGenereCodeEventTypeGadget, GenereCodeEventTypeGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeGetGadgetGadget, GenereCodeGetGadgetGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeEvenementGadget, GenereCodeEvenementGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeEvenementFenetre, GenereCodeEvenementFenetre.b)
                    SetGadgetState(#CheckBoxGenereCodeGadget, GenereCodeGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeEnumerationConstantes, GenereCodeEnumerationConstantes.b)
                    
                    DisableWindow(#FenetreVBToPB, #True)
                    
                  EndIf
                  
                ElseIf Langage$ = "English"
                  
                  If OpenWindow(#FenetrePreferences, 0, 0, 350, 388, "Preferences VB to PB...",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered) ; Code de la Fenêtre.
                    
                    TextGadget(#TexteInfoLanguage, 12, 12, WindowWidth(#FenetrePreferences, #PB_Window_InnerCoordinate) - 24, 15, "Program Language:", #PB_Text_Center) ; TextGadget
                    ComboBoxGadget(#ComboBoxLangage, 12, 30, WindowWidth(#FenetrePreferences, #PB_Window_InnerCoordinate) - 24, 20) ; ComboBoxGadget
                    AddGadgetItem(#ComboBoxLangage, -1, "Français")
                    AddGadgetItem(#ComboBoxLangage, -1, "English")
                    
                    SetGadgetState(#ComboBoxLangage, 1)
                    
                    CheckBoxGadget(#CheckBoxCompresseCode, 12, 306, 250, 17, "Condense the code as much as possible", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeLigneVide, 12, 282, 236, 17, "Generating Empty Lines to Ventilate the Code", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeCommentaire, 12, 258, 284, 17, "Generating the Comment Code for each Gadget", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeBoucleEvenement, 12, 234, 309, 17, "Generating the Event Loop Code of the window", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEvenementMenu, 12, 210, 240, 17, "Generating the Menu Event Code", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEventTypeGadget, 12, 186, 332, 17, "Generate EventType Event Code for each Gadget", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeGetGadgetGadget, 12, 162, 236, 17, "Generating the GetGadget Code...() Gadgets", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEvenementGadget, 12, 138, 248, 17, "Generating the Gadget Event Code", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEvenementFenetre, 12, 114, 250, 17, "Generating the Event Code of the Window", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeGadget, 12, 90, 166, 17, "Generating the Gadget Code", 0); CheckBoxGadget.
                    CheckBoxGadget(#CheckBoxGenereCodeEnumerationConstantes, 12, 67, 266, 17, "Generating the PB Constants Enumeration Code", 0); CheckBoxGadget.
                    
                    ButtonGadget(#ButtonAnnulerPreferences, 171, 338, 91, 35, "Cancel", 0); Button.
                    ButtonGadget (#ButtonValiderPreferences, 73, 338, 88, 35, "Validate", 0); Button.
                    
                    GadgetToolTip(#CheckBoxCompresseCode, "Gather on the same Line the Command and the Comment to Condense the code.")
                    GadgetToolTip(#CheckBoxGenereCodeLigneVide, "Adds Empty Lines in the Code between the Groups of elements constituting it")
                    GadgetToolTip(#CheckBoxGenereCodeCommentaire, "Add Comments on each Gadget to know what it corresponds to")
                    GadgetToolTip(#CheckBoxGenereCodeBoucleEvenement, "Creating the window-specific Event Loop")
                    GadgetToolTip(#CheckBoxGenereCodeEvenementMenu, "Create Event Code to Interact with Menus")
                    GadgetToolTip(#CheckBoxGenereCodeEventTypeGadget, "Create Gadget Event Type Code to Interact More With Them")
                    GadgetToolTip(#CheckBoxGenereCodeGetGadgetGadget, "Adding Commands to retrieve information about Gadgets")
                    GadgetToolTip(#CheckBoxGenereCodeEvenementGadget, "Create Event Code to Interact with Gadgets")
                    GadgetToolTip(#CheckBoxGenereCodeEvenementFenetre, "Create Event Code to Interact with the Window")
                    GadgetToolTip(#CheckBoxGenereCodeGadget, "Generates the Code of each Gadget to create them on the window")
                    GadgetToolTip(#CheckBoxGenereCodeEnumerationConstantes, "Create the Identifier Enumeration Code of each Gadget")
                    
                    SetGadgetState(#CheckBoxCompresseCode, CompresseCode.b)
                    SetGadgetState(#CheckBoxGenereCodeLigneVide, GenereCodeLigneVide.b)
                    SetGadgetState(#CheckBoxGenereCodeCommentaire, GenereCodeCommentaire.b)
                    SetGadgetState(#CheckBoxGenereCodeBoucleEvenement, GenereCodeBoucleEvenement.b)
                    SetGadgetState(#CheckBoxGenereCodeEvenementMenu, GenereCodeEvenementMenu.b)
                    SetGadgetState(#CheckBoxGenereCodeEventTypeGadget, GenereCodeEventTypeGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeGetGadgetGadget, GenereCodeGetGadgetGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeEvenementGadget, GenereCodeEvenementGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeEvenementFenetre, GenereCodeEvenementFenetre.b)
                    SetGadgetState(#CheckBoxGenereCodeGadget, GenereCodeGadget.b)
                    SetGadgetState(#CheckBoxGenereCodeEnumerationConstantes, GenereCodeEnumerationConstantes.b)
                    
                    DisableWindow(#FenetreVBToPB, #True)
                    
                  EndIf
                  
                  EndIf
                  
                Case #Menu_Aide
                  If Langage$ = "Français"
                    OpenHelp("Aide\Aide VB to PB.chm", "")
                    
                  ElseIf Langage$ = "English"
                    OpenHelp("Aide\Help VB to PB.chm", "")
                    
                  EndIf
                  
                Case #Menu_APropos
                  
                  If Langage$ = "Français"
                    
                  MessageRequester("A propos de l'auteur...", "    Ce programme à été réalisé par Monsieur:" + Chr(13) + "    Diepedalle David le 28/06/2019." + 
                                                              Chr(13) + Chr(13) + "    Ce programme permet de convertir le code de l'éditeur" + 
                                                              Chr(13) + "    Visuel de Visual Basic.Net en Code Pure Basic !")
                  
                ElseIf Langage$ = "English"
                  
                  MessageRequester ("About the author...", "This program was directed by Mr.:" + Chr(13) + "Diepedalle David on 28/06/2019." + 
                                                              Chr(13) + Chr(13) + "This program converts the publisher code" + 
                                                              Chr(13) + "Visual Basic.Net Visual in Pure Basic Code !")
                  
                EndIf
                
                Case #MenuContextuelTreeOuvrirTous ; Ouverture de tous les éléments du parent en dessous de celui séléctionné.
                  
                  ItemSelect.i = GetGadgetState(#TreeGadget)
                  SubLevel.i = GetGadgetItemAttribute(#TreeGadget, ItemSelect.i, #PB_Tree_SubLevel)
                  ElementsSubLevel.i = 0
                  
                  Repeat
                    
                    CheckSubLevel.i = GetGadgetItemAttribute(#TreeGadget, ItemSelect.i + 1 + ElementsSubLevel.i, #PB_Tree_SubLevel)
                    
                    If CheckSubLevel.i < SubLevel.i
                      Break
                    EndIf
                    
                    ElementsSubLevel.i + 1
                    
                  Until CheckSubLevel.i = SubLevel.i Or (ItemSelect.i + (ElementsSubLevel.i - 1)) = CountGadgetItems(#TreeGadget)
                  
                  If ElementsSubLevel.i > 0
                    For Element = ItemSelect.i To ItemSelect.i + (ElementsSubLevel.i - 1)
                      SetGadgetItemState(#TreeGadget, Element, #PB_Tree_Expanded)
                    Next
                  EndIf
                  
                Case #MenuContextuelTreeFermerTous ; Fermeture de tous les éléments du parent en dessous de celui séléctionné.
                  
                  ItemSelect.i = GetGadgetState(#TreeGadget)
                  SubLevel.i = GetGadgetItemAttribute(#TreeGadget, ItemSelect.i, #PB_Tree_SubLevel)
                  ElementsSubLevel.i = 0
                  
                  Repeat
                    
                    CheckSubLevel.i = GetGadgetItemAttribute(#TreeGadget, ItemSelect.i + 1 + ElementsSubLevel.i, #PB_Tree_SubLevel)
                    
                    If CheckSubLevel.i < SubLevel.i
                      Break
                    EndIf
                    
                    ElementsSubLevel.i + 1
                    
                  Until CheckSubLevel.i = SubLevel.i Or (ItemSelect.i + (ElementsSubLevel.i - 1)) = CountGadgetItems(#TreeGadget)
                  
                  If ElementsSubLevel.i > 0
                    For Element = ItemSelect.i To ItemSelect.i + (ElementsSubLevel.i - 1)
                      SetGadgetItemState(#TreeGadget, Element, #PB_Tree_Collapsed)
                    Next
                  EndIf
                  
                Case #MenuContextuelTreeConvertirCode
                  
                  CodePB$ = ""
                  
                  *MemoryID = AllocateMemory(10485760) ; Environt 10 Mo.
                  
                  If *MemoryID
                    
                    ForEach CodePB.s()
                      Code$ = CodePB.s() + Chr(13) + Chr(10)
                      PokeS(*MemoryID + Position.i, Code$)
                      Position.i + StringByteLength(CodePB.s() + Chr(13) + Chr(10))
                    Next
                    
                    SetClipboardText(PeekS(*MemoryID))
                    
                    If Langage$ = "Français"
                      MessageRequester("Information...", "    Le code à été convertie et copier dans le presse papier.", 64)
                      
                    ElseIf Langage$ = "English"
                      MessageRequester("Information...", "The code has been converted and copied to the clipboard", 64)
                      
                    EndIf
                  
                  Else
                    
                    If Langage$ = "Français"
                      MessageRequester("Erreur...", "    Impossible d'allouer la mémoire demandée" + Chr(13) + "    pour la génération du code !", 16)
                      
                    ElseIf Langage$ = "English"
                      MessageRequester("Error...", "Unable to allocate the requested memory" + Chr(13) + "for code generation !", 16)
                      
                    EndIf
                    
                  EndIf
                  
                Case #MenuContextuelCodeCopier
                  
                  Select GetGadgetState(#PanelGadget)
                      
                    Case 0
                      SetClipboardText(GetGadgetText(#EditorGadgetInformation))
                      
                    Case 1
                      SetClipboardText(GetGadgetText(#EditorGadgetAvertissement))
                      
                    Case 2
                      SetClipboardText(GetGadgetText(#EditorGadgetErreur))
                      
                    Case 3
                      SetClipboardText(GetGadgetText(#EditorGadgetCode))
                      
                  EndSelect
                  
              EndSelect
              
            Case #PB_Event_SizeWindow
              ResizeGadget(#TreeGadget, 1, 0, WindowWidth(#FenetreVBToPB) - 2, WindowHeight(#FenetreVBToPB) - 200 - 21)
              
              ResizeGadget(#PanelGadget, 1, GadgetHeight(#TreeGadget) + 1, WindowWidth(#FenetreVBToPB), 200)
              ResizeGadget(#EditorGadgetInformation, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27)
              ResizeGadget(#EditorGadgetAvertissement, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27)
              ResizeGadget(#EditorGadgetErreur, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27)
              ResizeGadget(#EditorGadgetCode, 0, 0, GadgetWidth(#PanelGadget) - 8, GadgetHeight(#PanelGadget) - 27)
              
              If GetWindowState(#FenetreVBToPB) = #PB_Window_Normal
                WindowWidth.i = WindowWidth(#FenetreVBToPB)
                WindowHeight.i = WindowHeight(#FenetreVBToPB)
                WindowFlags.i = 0
              ElseIf GetWindowState(#FenetreVBToPB) = #PB_Window_Maximize
                WindowFlags.i = 1
              EndIf
              
            Case #PB_Event_MoveWindow
              
              If GetWindowState(#FenetreVBToPB) = #PB_Window_Normal
                WindowX.i = WindowX(#FenetreVBToPB)
                WindowY.i = WindowY(#FenetreVBToPB)
                WindowFlags.i = 0
              ElseIf GetWindowState(#FenetreVBToPB) = #PB_Window_Maximize
                WindowFlags.i = 1
              EndIf
              
            Case #PB_Event_RestoreWindow
              
              If WindowFlags.i = 1
                ResizeWindow(#FenetreVBToPB, WindowX.i, WindowY.i, WindowWidth.i, WindowHeight.i)
              EndIf
              
            Case #PB_Event_CloseWindow
              
              If Langage$ = "Français"
                
                Quitter = MessageRequester("Avertissement", "      Vous êtes sur de vouloir quitter ?", 52)
                
              ElseIf Langage$ = "English"
                
                Quitter = MessageRequester("Warning", "Are you sure you want to Exit ? ", 52)
                
              EndIf
              
              If Quitter = 6 ; Oui
                Quitter()
              EndIf
              
          EndSelect
          
        Case #FenetrePreferences
          
          Select Event
              
            Case #PB_Event_Gadget ; Un évènement c'est passé sur un gadget.
              
              Select EventGadget ; Un évènement à eu lieu sur un gadget.
                  
                Case #ComboBoxLangage
                  LangageChanger.b = #True
                  
                Case #ButtonValiderPreferences
                  
                  If LangageChanger.b = #True
                    
                    If Langage$ = "Français"
                      MessageRequester("Information", "    Le programme va redémarer pour" + Chr(13) + "    appliquer la nouvelle langue !", 64)
                      
                    ElseIf Langage$ = "English"
                      MessageRequester("Information", "The program will restart for" + Chr(13) + "apply the new language !", 64)
                      
                    EndIf
                    
                  EndIf
                  
                  CompresseCode.b = GetGadgetState(#CheckBoxCompresseCode)
                  GenereCodeLigneVide.b = GetGadgetState(#CheckBoxGenereCodeLigneVide)
                  GenereCodeCommentaire.b = GetGadgetState(#CheckBoxGenereCodeCommentaire)
                  GenereCodeBoucleEvenement.b = GetGadgetState(#CheckBoxGenereCodeBoucleEvenement)
                  GenereCodeEvenementMenu.b = GetGadgetState(#CheckBoxGenereCodeEvenementMenu)
                  GenereCodeEventTypeGadget.b = GetGadgetState(#CheckBoxGenereCodeEventTypeGadget)
                  GenereCodeGetGadgetGadget.b = GetGadgetState(#CheckBoxGenereCodeGetGadgetGadget)
                  GenereCodeEvenementGadget.b = GetGadgetState(#CheckBoxGenereCodeEvenementGadget)
                  GenereCodeEvenementFenetre.b = GetGadgetState(#CheckBoxGenereCodeEvenementFenetre)
                  GenereCodeGadget.b = GetGadgetState(#CheckBoxGenereCodeGadget)
                  GenereCodeEnumerationConstantes.b = GetGadgetState(#CheckBoxGenereCodeEnumerationConstantes)
                  
                  Langage$ = GetGadgetText(#ComboBoxLangage)
                  
                  DisableWindow(#FenetreVBToPB, #False)
                  CloseWindow(#FenetrePreferences)
                  
                  If LangageChanger.b = #True
                    Delay(100)
                    Quitter()
                    
                  EndIf
                  
                Case #ButtonAnnulerPreferences
                  DisableWindow(#FenetreVBToPB, #False)
                  CloseWindow(#FenetrePreferences)
                  LangageChanger.b = #False
                  
              EndSelect
              
            Case #PB_Event_CloseWindow ; Termine la boucle de la fenêtre.
              DisableWindow(#FenetreVBToPB, #False)
              CloseWindow(#FenetrePreferences)
              
          EndSelect
          
      EndSelect
      
    ForEver
    
  EndIf
  
EndProcedure

; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

FenetreVBToPB()

; IDE Options = PureBasic 5.71 beta 1 LTS (Windows - x64)
; CursorPosition = 4685
; FirstLine = 672
; Folding = AAAA9
; EnableXP
; EnableUser
; EnableOnError
; Executable = VB To PB.exe
; EnableCompileCount = 1496
; EnableBuildCount = 11
; EnableExeConstant