réorganiser treegadget avec la souris

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

réorganiser treegadget avec la souris

Message par Gillou »

Bonjour à tous,

je cherche à déplacer les éléments d'un treegadget par l'intérmédiaire de la souris

Par l'intermédiaire de procedures DRAGANDDROP écrite par freak
J'arrive à récupérer la position des 'items' déposés

Mais comment connaître la position en x et en y des éléments dans la treegadget?

J'ai cherché un peu partout, mais sans réponse à part un code en C
Mais bon vu que je n'y connais rien C :(

Merci d'avance
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Le but étant d'améliorer le programme pour créer les aides des librairies.

Il y a encore plein d'érreurs dans le code, je les résoudrais par la suite.

Si vous lancez le code, normalement si vous appuyez sur parcourir, vous accéder direct au dossier des libs

Ensuite une fois la lib charger
faites du 'Drag And Drop' avec un élément à l'intérieur du treegadget (pas de la drague :lol:)

normalement quand vous déposer le fichier le debug affiche la position en x et y du fichier déposer

Voila, après je veux insérer dans le treegadget le nouvel élément à la place voulu

Donc voilà, le début de mon code:

Code : Tout sélectionner

Global Titre$, WindowID, Version$, fichier_recent, pos.CHARRANGE, NBLang, LibName$, nPL$, DLL$, Image1, Image2

Titre$ = "PureAide"
Version$ = "1.00"

OnErrorGoto(?CatchError)

;- ( Enumeration )
Enumeration
    ; fenetre
    #Window_0
    ; Popupmenu
    #Popup_0
    #Popup_1
    #Popup_2
    #Popup_3
    #Popup_4
    #Popup_5
    #Popup_6
    ; Menu
    #MenuBar_0
    #MENU_1
    #MENU_2
    #MENU_3
    #MENU_4
    #MENU_7
    #MENU_8
    #MENU_11
    #MENU_12
    #MENU_14
    #MENU_13
    #MENU_17
    #MENU_18
    #MENU_19
    ; Shorcut
    #Enter
    ; Outil Tree
    #Ajouter
    #Supprimer
    ; Gadget menu
    #Centrer
    #Titre
    #Couleur
    #Gras
    #Italic
    #Lien
    #Image
    #Lib
    #DLL
    #Fonction
    #AideRapide
    #Arguments
    ; Gadget
    #Tree_0
    #String_1
    #Frame3D_1
    #Editor_0
    #Frame3D_2
    #Frame3D_3
    #Editor_1
    #Editor_3
    #Frame3D_6
    #Text_0
    #String_3
    #Text_1
    #Text_2
    #Button_0
    ; Barre de status
    #StatusBar_0
    ; Image
    #Image_1
    #Image_2
EndEnumeration
; _)

Image1 = CatchImage(#Image_1, ?Image1)
Image2 = CatchImage(#Image_2, ?Image2)
DataSection
    Image1 :
        IncludeBinary "Dossier.ico"
    Image2 :
        IncludeBinary "Page.ico"
EndDataSection

;- Nombre de code language
NBLang = 65
Dim Language$(NBLang)

Procedure.s InputRequester2(title.s, Message.s, DefaultString.s)
    ParentID = WindowID()
    DisableWindow(ParentID, #True)
    img = CreateImage(#PB_Any, 100, 100)
    UseImage(img)
    StartDrawing(ImageOutput())
        Message = ReplaceString(ReplaceString(Message, #CRLF$, Chr(10)), Chr(13), Chr(10))
        nbl = CountString(Message, Chr(10)) + 1
        If nbl > 1
            For a = 1 To nbl
                If TextLength(StringField(message, a, Chr(10))) > lon
                    lon = TextLength(StringField(message, a, Chr(10))) / 1.2
                EndIf
            Next
        Else
            lon = TextLength(message) / 1.2
        EndIf
        ht = nbl * 13
    StopDrawing()
    FreeImage(img)
    win = OpenWindow(#PB_Any, 0, 0, lon, 80 + ht, #PB_Window_ScreenCentered, title)
    CreateGadgetList(WindowID(win))
    AddKeyboardShortcut(win, #PB_Shortcut_Return, #Enter)
    WindowWidth = WindowWidth()
    WindowHeight = WindowHeight()
    TextGadget(#PB_Any, 10, 10, WindowWidth - 20, ht, Message)
    string = StringGadget(#PB_Any, 5, WindowHeight - 60, WindowWidth - 10, 20, DefaultString)
    button = ButtonGadget(#PB_Any, (WindowWidth - 60) / 2, WindowHeight - 30, 60, 20, "OK", #PB_Button_Default)
    SetWindowPos(WindowID(win), #HWND_TOP)
    Repeat
        Select WaitWindowEvent()
            Case #PB_Event_Menu
                Select EventMenuID()
                    Case #Enter
                        Result$ = GetGadgetText(string)
                        quit = 1
                EndSelect
            Case #PB_EventGadget
                Select EventGadgetID()
                    Case button
                        Result$ = GetGadgetText(string)
                        quit = 1
                EndSelect
        EndSelect
    Until quit = 1
    CloseWindow(win)
    DisableWindow(ParentID, #False)
    SetWindowPos(ParentID, #HWND_TOP)
    ProcedureReturn Result$
EndProcedure

#TVN_BEGINDRAG = -407
#TVN_BEGINRDRAG = -408
#TVS_DISABLEDRAGDROP = $10
#Drag_LeftMouse = 1
#Drag_RightMouse = 2
#ListIcon = 3

Global hWndTV.l, DropProc.l, DragDropMode.l, hDragIml.l, DragItem.l

Procedure.l DragDropCallback(Window.l, Message.l, wParam.l, lParam.l)
    Protected DoDrag.l, DropX.l, DropY.l, hItem.l, hItem2.l, dItem.l
    result = #PB_ProcessPureBasicEvents
    Select Message
        Case #WM_NOTIFY
            *lp.NMHDR = lParam
            If *lp\code = #TVN_BEGINDRAG And (DragDropMode & #Drag_LeftMouse) : DoDrag = #True : EndIf
            If *lp\code = #TVN_BEGINRDRAG And (DragDropMode & #Drag_RightMouse) : DoDrag = #True : EndIf
            If DoDrag
                *pnmtv.NMTREEVIEW = lParam
                DragItem = *pnmtv\itemNew\hItem
                hDragIml = SendMessage_(hWndTV, #TVM_CREATEDRAGIMAGE, 0, DragItem)
                SendMessage_(hWndTV, #TVM_SELECTITEM, #TVGN_CARET, #Null)
                ImageList_BeginDrag_(hDragIml, 0, 0, 0)
                ImageList_DragEnter_(GetParent_(hWndTV), 0, 0)
                ImageList_DragShowNolock_(#True)
                ImageList_DragLeave_(hWndTV)
                ShowCursor_(#False)
                SetCapture_(GetParent_(hWndTV))
                SendMessage_(hWndTV, #TVM_SELECTITEM, #TVGN_CARET, DragItem)
            EndIf
        Case #WM_MOUSEMOVE
            If hDragIml
                DropX = PeekW( @lParam)
                DropY = PeekW( @lParam + 2)
                ImageList_DragMove_(DropX, DropY + 20)
                ImageList_DragShowNolock_(#False)
                ImageList_DragShowNolock_(#True)
            EndIf
        Case #WM_LBUTTONUP
            If hDragIml And (DragDropMode & #Drag_LeftMouse)
                ImageList_EndDrag_()
                ReleaseCapture_()
                ShowCursor_(#True)
                ImageList_Destroy_(hDragIml)
                hDragIml = #False
                dItem = 0
                hItem = SendMessage_(hWndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
                While hItem <> DragItem
                    hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem)
                    Repeat
                        If hItem2 = #Null : hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem) : EndIf
                        If hItem2 = #Null : hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_PARENT, hItem) : EndIf
                    Until hItem2 <> #Null
                    hItem = hItem2
                    dItem + 1
                Wend
                CallFunctionFast(DropProc, WindowMouseX(), WindowMouseY(), #Drag_LeftMouse, dItem)
            EndIf
        Case #WM_RBUTTONUP
            If hDragIml And (DragDropMode & #Drag_RightMouse)
                ImageList_EndDrag_()
                ReleaseCapture_()
                ShowCursor_(#True)
                ImageList_Destroy_(hDragIml)
                hDragIml = #False
                dItem = 0
                hItem = SendMessage_(hWndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
                While hItem <> DragItem
                    hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem)
                    Repeat
                        If hItem2 = #Null : hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem) : EndIf
                        If hItem2 = #Null : hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_PARENT, hItem) : EndIf
                    Until hItem2 <> #Null
                    hItem = hItem2
                    dItem + 1
                Wend
                CallFunctionFast(DropProc, WindowMouseX(), WindowMouseY(), #Drag_RightMouse, DragItem)
            EndIf
    EndSelect
    ProcedureReturn result
EndProcedure

Procedure.l EnableDragDrop(TVGadget.l, DragMode.l, DropProcedure.l)
    Protected Style.l, hIml.l
    hWndTV = GadgetID(TVGadget)
    DropProc = DropProcedure
    DragDropMode = DragMode
    Style = GetWindowLong_(hWndTV, #GWL_STYLE)
    Style = Style & ( ~#TVS_DISABLEDRAGDROP)
    SetWindowLong_(hWndTV, #GWL_STYLE, Style)
    SetWindowCallback( @DragDropCallback())
    ProcedureReturn #True
EndProcedure

Procedure DropProcedure(X.l, Y.l, Button.l, Item.l)
    If Button = #Drag_LeftMouse
        gx = GadgetX(#tree_0)
        gy = GadgetY(#Tree_0)
        lx = GadgetWidth(#Tree_0)
        ly = GadgetHeight(#Tree_0)
        If x > Gx And x < gx + lx
            If y > gy And y < gy + ly
                Debug Str(x) + " ; " + Str(y)
            EndIf
        EndIf
    EndIf
EndProcedure

Structure finfo
    FunName.s
    Args.s
    HelpLine.s
EndStructure
Structure s5
    name.s
    lien.s
    page.s
    Args.s
    Aide.s
EndStructure
NewList allfunctions.finfo()
NewList TreeFonctions.s5()

Structure Seeker
    StructureUnion
    b.b
    w.w
    l.l
    EndStructureUnion
EndStructure

Procedure ChargLib(LibFile$)
    LibName$ = GetFilePart(LibFile$)
    If ReadFile(0, LibFile$)
        LibSize = Lof()
        *LibHeader = AllocateMemory(LibSize)
        ReadData(*LibHeader, LibSize)
        CloseFile(0)
        *LibEnd = *LibHeader + LibSize
        *LHSeeker.Seeker = *LibHeader
        If *LHSeeker\l = 'PURE' And PeekL(*LHSeeker + 8) = 'LIB3' And PeekL(*LHSeeker + 16) = '3BIL'
            *LHSeeker.Seeker = *LibHeader + 20
            While *LHSeeker\b <> 0 : *LHSeeker + 1 : Wend
            *LHSeeker + 2
            If *LHSeeker >= *LibEnd : ProcedureReturn : EndIf
            nDLL = *LHSeeker\b
            If nDLL
                For i = 1 To nDLL
                    *LHSeeker + 1
                    DLL$ + ", " + PeekS(*LHSeeker)
                    *LHSeeker + Len(PeekS(*LHSeeker))
                Next i
                DLL$ = Right(DLL$, Len(DLL$) - 2)
                *LHSeeker + 1
            EndIf
            *LHSeeker + 1
            While *LHSeeker\b <> 0 : *LHSeeker + 1 : Wend
            *LHSeeker + 1
            If *LHSeeker >= *LibEnd : ProcedureReturn : EndIf
            nPL = *LHSeeker\b
            If nPL
                For i = 1 To nPL
                    *LHSeeker + 1
                    nPL$ + ", " + PeekS(*LHSeeker)
                    *LHSeeker + Len(PeekS(*LHSeeker))
                Next i
                nPL$ = Right(nPL$, Len(nPL$) - 2)
            EndIf
            *LHSeeker + 1
            If *LHSeeker >= *LibEnd : ProcedureReturn : EndIf
            While PeekL(*LHSeeker) <> 'PURE' And PeekL(*LHSeeker + 8) <> 'DAT1'
                AddElement(allfunctions())
                allfunctions()\FunName = PeekS(*LHSeeker)
                *LHSeeker + Len(allfunctions()\FunName) + 1
                *LHSeeker + * LHSeeker\b + 5
                While *LHSeeker\b = 0 : *LHSeeker + 1 : Wend
                allfunctions()\Args = ""
                allfunctions()\HelpLine = ""
                If *LHSeeker\b = '('
                    arging = 1
                    While *LHSeeker\b <> 0
                        If *LHSeeker\b = '-'
                            arging = 0
                        EndIf
                        If arging
                            allfunctions()\Args + Chr(*LHSeeker\b)
                        Else
                            allfunctions()\HelpLine + Chr(*LHSeeker\b)
                        EndIf
                        *LHSeeker + 1
                    Wend
                    allfunctions()\Args = LTrim(RTrim(allfunctions()\Args))
                    allfunctions()\HelpLine = LTrim(RTrim(RemoveString(allfunctions()\HelpLine, "- ")))
                    *LHSeeker + 1
                EndIf
            Wend
        EndIf
        FreeMemory(*LibHeader)
    EndIf
    
    ForEach allfunctions()
        fonctrouve = 0
        fonc$ = allfunctions()\FunName
        ForEach TreeFonctions()
            If TreeFonctions()\name = fonc$
                fonctouve = 1
            EndIf
        Next
        If fonctrouve = 0 And fonc$ <> ""
            AddElement(TreeFonctions())
            TreeFonctions()\name = allfunctions()\funname
            TreeFonctions()\Args = allfunctions()\Args
            TreeFonctions()\Aide = allfunctions()\HelpLine
        EndIf
    Next
    ClearList(allfunctions())
    ProcedureReturn 1
EndProcedure

Procedure Fenetre_Principale()
    If CreatePopupMenu(#Popup_0)
        MenuItem(#Popup_1, "Titre1 : 8 pixels")
        MenuItem(#Popup_2, "Titre2 : 10 pixels")
        MenuItem(#Popup_3, "Titre3 : 12 pixels")
        MenuItem(#Popup_4, "Titre4 : 14 pixels")
        MenuItem(#Popup_5, "Titre5 : 18 pixels")
        MenuItem(#Popup_6, "Titre6 : 24 pixels")
    EndIf
    If OpenWindow(#Window_0, 0, 0, 700, 690, #PB_Window_Invisible | #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered, Titre$ + " - Projet1")
        WindowID = WindowID(#Window_0)
        If CreateMenu(#MenuBar_0, WindowID)
            MenuTitle(Language$(0)) ; Fichiers
            MenuItem(#MENU_1, Language$(1)) ; Nouveau
            MenuItem(#MENU_2, Language$(2)) ; Charger
            MenuItem(#MENU_3, Language$(3)) ; Sauver
            MenuItem(#MENU_4, Language$(4)) ; Sauver sous
            MenuBar()
            OpenSubMenu(Language$(5)) ; Fichiers récents
                If fichier_recent
                    For a = 0 To fichier_recent
                        MenuItem(#PB_Any, Language$(6)) ; récent
                    Next
                EndIf
            CloseSubMenu()
            MenuBar()
            MenuItem(#MENU_8, Language$(7)) ; Quitter
            MenuTitle(Language$(13)) ; Creation
            MenuItem(#MENU_17, Language$(14)) ; Aperçu page
            MenuItem(#MENU_18, Language$(15)) ; aperçu de l'aide
            MenuBar()
            MenuItem(#MENU_19, Language$(16)) ; créer l'aide
            MenuTitle(Language$(8)) ; preferences
            OpenSubMenu(Language$(9)) ; langues
                MenuItem(#MENU_12, Language$(10)) ; français
                MenuItem(#MENU_13, Language$(11)) ; anglais
            CloseSubMenu()
            MenuBar()
            MenuItem(#MENU_14, Language$(12)) ; preferences
            MenuItem(#MENU_11, Language$(36)) ; Aide
            MenuItem(#MENU_7, Language$(37)) ; A propos
        EndIf
        If CreateStatusBar(#StatusBar_0, WindowID)
        EndIf
        AnimateWindow(WindowID, 250, #AW_VER_POSITIVE)
        If CreateGadgetList(WindowID)
            
            Frame3DGadget(#Frame3D_6, 10, 10, 680, 80, Language$(19)) ; Le projet
            TextGadget(#Text_0, 20, 32, 50, 20, Language$(20)) ; projet
            StringGadget(#String_3, 70, 30, 500, 20, "", #PB_String_ReadOnly) ; projet
            TextGadget(#Text_1, 20, 62, 50, 20, Language$(21)) ; Librarie
            StringGadget(#String_1, 70, 60, 500, 20, "") ; Librairie
            ButtonGadget(#Button_0, 580, 60, 100, 20, Language$(22)) ; Parcourir
            
            ButtonGadget(#Ajouter, 10, 100, 95, 20, Language$(64))
            ButtonGadget(#Supprimer, 115, 100, 95, 20, Language$(65))
            TreeGadget(#Tree_0, 10, 130, 200, 510, #PB_Tree_AlwaysShowSelection)
            
            Frame3DGadget(#Frame3D_3, 220, 100, 470, 110, Language$(18))
            ButtonGadget(#Centrer, 225, 125, 60, 20, Language$(23))
            ButtonGadget(#Titre, 290, 125, 60, 20, Language$(24))
            ButtonGadget(#Couleur, 355, 125, 60, 20, Language$(25))
            ButtonGadget(#Gras, 420, 125, 60, 20, Language$(26))
            ButtonGadget(#Italic, 485, 125, 60, 20, Language$(27))
            ButtonGadget(#Lien, 550, 125, 60, 20, Language$(28))
            ButtonGadget(#Image, 615, 125, 60, 20, Language$(29))
            ButtonGadget(#Lib, 225, 155, 60, 20, Language$(17))
            ButtonGadget(#DLL, 290, 155, 60, 20, Language$(53))
            ButtonGadget(#Fonction, 355, 155, 60, 20, Language$(62))
            ButtonGadget(#Arguments, 420, 155, 60, 20, Language$(58))
            ButtonGadget(#AideRapide, 485, 155, 60, 20, Language$(56))
            If OpenRichEdit(WindowID, #Editor_0, 220, 220, 470, 420, "") = 0
                End
            EndIf
            SetWindowPos(WindowID, #HWND_TOP)
            ProcedureReturn windowid
        EndIf
    EndIf
EndProcedure

Procedure ReadCatalog(Filename$)
    
    If ReadFile(0, Filename$)
        If ReadString() = "Catalog"
            For k = 0 To NBLang
                Language$(k) = ReadString()
            Next
        EndIf
        CloseFile(0)
    EndIf
    
EndProcedure

Procedure RestoreCatalog()
    Restore BaseLanguage
    For k = 0 To NBLang
        Read Language$(k)
    Next
    
    DataSection
        BaseLanguage :
        Data$ "Fichier"
        Data$ "Nouveau projet"
        Data$ "Charger un projet"
        Data$ "Sauvegarder"
        Data$ "Sauvegarder sous"
        Data$ "Fichiers récents"
        Data$ "Projet"
        Data$ "Quitter"
        Data$ "Préférences"
        Data$ "Langue"
        Data$ "Anglais" ; 10
        Data$ "Français"
        Data$ "Préférences"
        Data$ "Création"
        Data$ "Aperçu de la page"
        Data$ "Aperçu de l'aide"
        Data$ "Créer l'aide"
        Data$ "Librairies"
        Data$ "Les outils"
        Data$ "Le projet"
        Data$ "Projet :" ; 20
        Data$ "Librarie :"
        Data$ "Parcourir..."
        Data$ "Centrer"
        Data$ "Titre"
        Data$ "Couleur"
        Data$ "Gras"
        Data$ "Italique"
        Data$ "Lien"
        Data$ "Image"
        Data$ "Il y a une erreur :-(" + #CRLF$ + #CRLF$ + "Description : " ; 30
        Data$ #CRLF$ + "Numéro de la ligne ou s'est produite l'erreur : "
        Data$ #CRLF$ + "Nombres total d'erreurs : "
        Data$ #CRLF$ + #CRLF$ + "Le programme va maintenant se terminer." + #CRLF$ + #CRLF$ + "Voulez-vous envoyer le rapport d'erreur au programmeur?"
        Data$ "Erreur!"
        Data$ "Rapport d'erreurs de "
        Data$ "Aide"
        Data$ "A propos"
        Data$ "Choisissez une image"
        Data$ "Images"
        Data$ "Ouvrez la librairie" ; 40
        Data$ "Librairie"
        Data$ "(Si un texte est sélectionné, la commande va être écrite autour de ce texte)"
        Data$ "Insérer la commande '"
        Data$ "Entrez le lien ci-dessous"
        Data$ "Charger / recharger la librairie"
        Data$ "Ajouter un dossier à la liste"
        Data$ "Supprimer un dossier de la liste"
        Data$ "Liste de toutes les commandes contenues dans la librairie"
        Data$ "Ecrivez ici votre page"
        Data$ "Ecrivez ici l'adresse de la librairie" ; 50
        Data$ "Le nom du projet"
        Data$ "Impossible d'ouvrir la librairie selectionnée"
        Data$ "DLL"
        Data$ "Insérer les noms des librairies PureBasic utilisées"
        Data$ "Insérer les noms des librairies externes utilisées"
        Data$ "Aide"
        Data$ "Insérer l'aide rapide de la fonction"
        Data$ "Arguments"
        Data$ "Insérer les arguments de la fonction"
        Data$ "Ajouter un dossier" ; 60
        Data$ "Entrer le nom du dossier"
        Data$ "Fonction"
        Data$ "Insérer le nom de la fonction en cours"
        Data$ "Ajouter dossier"
        Data$ "Supprimer dossier"
    EndDataSection
EndProcedure

RestoreCatalog()
If Fenetre_Principale()
    EnableDragDrop(#Tree_0, #Drag_LeftMouse | #Drag_RightMouse, @DropProcedure())
    
    Repeat
        Select WaitWindowEvent()
            Case #PB_EventMenu
                Select EventMenuID()
                    Case #Popup_1
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Title1>" + GetSelectedText() + "</Title1>")
                    Case #Popup_2
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Title2>" + GetSelectedText() + "</Title2>")
                    Case #Popup_3
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Title3>" + GetSelectedText() + "</Title3>")
                    Case #Popup_4
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Title4>" + GetSelectedText() + "</Title4>")
                    Case #Popup_5
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Title5>" + GetSelectedText() + "</Title5>")
                    Case #Popup_6
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Title6>" + GetSelectedText() + "</Title6>")
                        
                    Case #MENU_8 ; Quitter
                        quit = 1
                EndSelect
                
            Case #PB_EventGadget
                Select EventGadgetID()
                    Case #Centrer
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Center>" + GetSelectedText() + "</Center>")
                    Case #Titre
                        DisplayPopupMenu(#Popup_0, WindowID, WindowX() + GadgetX(#Titre) + 5, WindowY() + GadgetY(#Titre) + 70)
                    Case #Couleur
                        col = ColorRequester(Def_Couleur)
                        If col >= 0
                            SelectedRange( @pos)
                            SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Color=" + Color2HTM(col) + ">" + GetSelectedText() + "</Color>")
                        EndIf
                    Case #Gras
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Bold>" + GetSelectedText() + "</Bold>")
                    Case #Italic
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Italic>" + GetSelectedText() + "</Italic>")
                    Case #Lien
                        link$ = InputRequester2(Titre$, Language$(44) + #CRLF$ + "ex : http://www.myweb.com/, ou mailto:webmaster@myweb.com, %CmdName%, ...", "")
                        If link$
                            SelectedRange( @pos)
                            SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Link=" + Chr(34) + link$ + Chr(34) + ">" + GetSelectedText() + "</Link>")
                        EndIf
                    Case #Image
                        resu = ReadFile(#PB_Any, GetSelectedText())
                        If resu
                            CloseFile(resu)
                            SelectedRange( @pos)
                            SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Image>" + GetSelectedText() + "</Image>")
                        Else
                            Image$ = OpenFileRequester(Language$(38), "", Language$(39) + " (bmp, jpg, png, tga, gif, tiff)|*.bmp;*.jpg;*.jpeg;*.png;*.gif;*.tga;*.tiff", 0)
                            resu = ReadFile(#PB_Any, image$)
                            If resu
                                SelectedRange( @pos)
                                SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, "<Image>" + Image$ + "</Image>")
                            EndIf
                        EndIf
                    Case #Lib
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, nPL$ + GetSelectedText())
                    Case #DLL
                        SelectedRange( @pos)
                        SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, DLL$ + GetSelectedText())
                    Case #Fonction
                        fonc$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = fonc$
                                SelectedRange( @pos)
                                SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, TreeFonctions()\name + GetSelectedText())
                            EndIf
                        Next
                    Case #AideRapide
                        fonc$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = fonc$
                                SelectedRange( @pos)
                                SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, TreeFonctions()\aide + GetSelectedText())
                            EndIf
                        Next
                    Case #Arguments
                        fonc$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = fonc$
                                SelectedRange( @pos)
                                SetRichEditText(#Editor_0, pos\cpmin, pos\cpmax, TreeFonctions()\args + GetSelectedText())
                            EndIf
                        Next
                        
                    Case #Button_0 ; PARCOURIR
                        file$ = GetGadgetText(#String_1)
                        If GetExtensionPart(file$) = ""
                            resu = ReadFile(#PB_Any, file$)
                            If Resu
                                CloseFile(resu)
                            Else
                                file$ = GetPureBasicPath() + "PureLibraries\UserLibraries\"
                            EndIf
                        Else
                            file$ = GetPureBasicPath() + "PureLibraries\UserLibraries\"
                        EndIf
                        
                        file$ = OpenFileRequester(Language$(40), file$, Language$(41) + "|*.*", 0)
                        
                        If GetExtensionPart(file$) = ""
                            resu = ReadFile(#PB_Any, file$)
                            If Resu
                                CloseFile(resu)
                                SetGadgetText(#String_1, file$)
                                If ChargLib(file$)
                                    ClearGadgetItemList(#Tree_0)
                                    AddGadgetItem(#Tree_0, -1, LibName$, Image1)
                                    OpenTreeGadgetNode(#Tree_0)
                                    SetGadgetText(#String_3, LibName$)
                                    ForEach TreeFonctions()
                                        AddGadgetItem(#Tree_0, -1, TreeFonctions()\name, Image2)
                                    Next
                                    CloseTreeGadgetNode(#Tree_0)
                                Else
                                    MSGP(Language$(34), Language$(53), 0, 3)
                                EndIf
                            Else
                                MSGP(Language$(34), Language$(53), 0, 3)
                            EndIf
                        Else
                            MSGP(Language$(34), Language$(53), 0, 3)
                        EndIf
                    Case #Ajouter
                        Nom$ = InputRequester2(Language$(60), Language$(61), "")
                        If nom$
                            AddGadgetItem(#Tree_0, -1, Nom$, Image1)
                            OpenTreeGadgetNode(#Tree_0)
                            CloseTreeGadgetNode(#Tree_0)
                        EndIf
                        
                    Case #Tree_0
                        ForEach TreeFonctions()
                            If nom$ = TreeFonctions()\name
                                TreeFonctions()\page = GetRichEditText(#Editor_0, 0, -1)
                                TreeFonctions()\page = ReplaceString(TreeFonctions()\page, Chr(13), "¤|¤")
                            EndIf
                        Next
                        nom$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = nom$
                                SetRichEditText(#Editor_0, 0, -1, ReplaceString(TreeFonctions()\page, "¤|¤", Chr(13)))
                            EndIf
                        Next
                        
                        
                EndSelect
            Case #PB_Event_CloseWindow
                quit = 1
                
            Default
                If IsMouseOver(GadgetID(#Centrer))
                    StatusBarText(#StatusBar_0, 0, Language$(43) + Language$(23) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Titre))
                    StatusBarText(#StatusBar_0, 0, Language$(43) + Language$(24) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Couleur))
                    StatusBarText(#StatusBar_0, 0, Language$(43) + Language$(25) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Gras))
                    StatusBarText(#StatusBar_0, 0, Language$(43) + Language$(26) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Italic))
                    StatusBarText(#StatusBar_0, 0, Language$(43) + Language$(27) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Lien))
                    StatusBarText(#StatusBar_0, 0, Language$(43) + Language$(28) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Image))
                    StatusBarText(#StatusBar_0, 0, Language$(43) + Language$(29) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Button_0))
                    StatusBarText(#StatusBar_0, 0, Language$(45))
                ElseIf IsMouseOver(GadgetID(#Ajouter))
                    StatusBarText(#StatusBar_0, 0, Language$(46))
                ElseIf IsMouseOver(GadgetID(#Supprimer))
                    StatusBarText(#StatusBar_0, 0, Language$(47))
                ElseIf IsMouseOver(GadgetID(#Tree_0))
                    StatusBarText(#StatusBar_0, 0, Language$(48))
                ElseIf IsMouseOver(GadgetID(#String_1))
                    StatusBarText(#StatusBar_0, 0, Language$(50))
                ElseIf WindowMouseX() > 219 And WindowMouseX() < 220 + 471 And WindowMouseY() > 219 And WindowMouseY() < 220 + 421
                    StatusBarText(#StatusBar_0, 0, Language$(49))
                ElseIf IsMouseOver(GadgetID(#String_3))
                    StatusBarText(#StatusBar_0, 0, Language$(51))
                ElseIf IsMouseOver(GadgetID(#Lib))
                    StatusBarText(#StatusBar_0, 0, Language$(54))
                ElseIf IsMouseOver(GadgetID(#Dll))
                    StatusBarText(#StatusBar_0, 0, Language$(55))
                ElseIf IsMouseOver(GadgetID(#AideRapide))
                    StatusBarText(#StatusBar_0, 0, Language$(57) + " '" + GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0) + "'")
                ElseIf IsMouseOver(GadgetID(#Arguments))
                    StatusBarText(#StatusBar_0, 0, Language$(59) + " '" + GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0) + "'")
                ElseIf IsMouseOver(GadgetID(#Fonction))
                    StatusBarText(#StatusBar_0, 0, Language$(63))
                Else
                    StatusBarText(#StatusBar_0, 0, "")
                EndIf
        EndSelect
    Until quit = 1
    CloseRichEdit(#Editor_0)
    AnimateWindow(WindowID, 250, #AW_BLEND | #AW_HIDE)
EndIf
End
CatchError :
If MSGP(Language$(34), Language$(30) + GetErrorDescription() + Language$(31) + Str(GetErrorLineNR()) + Language$(32) + Str(GetErrorCounter()) + Language$(33), 4, 1) = 6
    OpenMailProgram("LGGillou@hotmail.com", "", Language$(35) + Titre$ + " " + version$, GetErrorDescription() + " ; " + Str(GetErrorLineNR()) + " ; " + Str(GetErrorCounter()))
EndIf
End

Vous aurez aussi besoin de cette lib

http://lggillou.free.fr/images/telechar ... ctions.zip

L'aide n'est pas terminé mais bon...

http://lggillou.free.fr/images/telechar ... ossier.ico

http://lggillou.free.fr/images/telechargement/Page.ico :lol: :lol: :lol:
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

La lib que tu donnes n'est pas suffisante pour faire fonctionner le programme.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

@nico
Je corrige ça

en attendant, voila le prog sous zip:

http://lggillou.free.Fr/images/telechar ... reAide.zip

Autrement voilà les lib que j'utilise :
PureTools_I_03, Packer, Thread, String, StringExtension, Sort, Requester, Misc2, Misc, MemoryExtension, Memory, Math, LinkedList, LinkedListExtension, Library, LibraryExtension, Image, ImagePlugin, Gadget, GadgetExtension, Date, Window, WindowExtension, FileSystem, File, SimpleList, 2DDrawing

J'oubliais Richedit aussi

Tu peux me dire ou le programme ce bloque?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Le programme se bloquait pour les fonctions Richedit.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

ok, il me semblait pourtant qu'il était fourni dans le pack de mise à jour de purebasic
bloquait
passé, tu as résolu le problème, sinon je la poste
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Disons que j'ai téléchargé l'exe pour voir ce que donnait le prog.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Et donc tu as une idée pour ma question?

Et autrement, des idées pour l'améliorer?

Au fait, qu'est-ce que tu pense de l'idée?
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Bon je chercherai la solution plus tard en attendant je vais mettre des flèche, merci nico de ton intéressement

J'ai supprimé les commandes richedit et j'utilise la bibliothèque LibEditorPlus http://progi1984.free.fr/projets/prog/LibEditorPlus.zip

Bon le code est toujours pas fini, mais ça avance disons 20%

Code : Tout sélectionner

Global Titre$, WindowID, Version$, fichier_recent, pos.CHARRANGE, NBLang, LibName$, nPL$, DLL$, Image1, Image2 , color , Image3 , Image4 , Image5 , Image6 , Police.s , TaillePolice, ColorText , ColorKeyWords
; AJouter la possibilité de mettre plusieurs langues dans l'aide
; Empecher l'ajout d'un dossier dont le nom existe déjà
; finir la coloration syntaxique

Titre$ = "PureAide"
Version$ = "1.00"
Color=RGB(255,255,223) ; Background
Police.s="Comic Sans MS"
TaillePolice=12
ColorText=RGB(62, 88, 125)
ColorKeyWords=RGB(149, 13, 65)

OnErrorGoto(?CatchError)

;-( Enumeration )
Enumeration
    ; font
    #Font_0
    ; fenetre
    #Window_0
    ; Popupmenu
    #Popup_0
    #Popup_1
    #Popup_2
    #Popup_3
    #Popup_4
    #Popup_5
    #Popup_6
    ; Menu
    #MenuBar_0
    #MENU_1
    #MENU_2
    #MENU_3
    #MENU_4
    #MENU_7
    #MENU_8
    #MENU_10
    #MENU_11
    #MENU_12
    #MENU_14
    #MENU_13
    #MENU_17
    #MENU_18
    #MENU_19
    ; Shorcut
    #Enter
    ; Outil Tree
    #Ajouter
    #Supprimer
    #Bas
    #Haut
    #Gauche
    #Droite
    ; Gadget menu
    #Centrer
    #Titre
    #Couleur
    #Gras
    #Italic
    #Lien
    #Image
    #Lib
    #DLL
    #Fonction
    #AideRapide
    #Arguments
    ; Gadget
    #Tree_0
    #String_1
    #Frame3D_1
    #Editor_0
    #Frame3D_2
    #Frame3D_3
    #Editor_1
    #Editor_3
    #Frame3D_6
    #Text_0
    #String_3
    #Text_1
    #Text_2
    #Button_0
    ; Barre de status
    #StatusBar_0
    ; Image
    #Image_1
    #Image_2
    #Image_3
    #Image_4
    #Image_5
    #Image_6
    ;Preference
    #Window_1
  #CheckBox_100
  #Button_100
  #Button_101
  #Button_102
  #Button_103
  #Image_7
  #Image_8
  #Image_9
  #Image_100
  #Image_101
  #Image_102
  #String_100
EndEnumeration
;_)

Image1 = CatchImage(#Image_1, ?Image1)
Image2 = CatchImage(#Image_2, ?Image2)
Image3 = CatchImage(#Image_3, ?Image3)
Image4 = CatchImage(#Image_4, ?Image4)
Image5 = CatchImage(#Image_5, ?Image5)
Image6 = CatchImage(#Image_6, ?Image6)
DataSection
    Image1 :
        IncludeBinary "Dossier.ico"
    Image2 :
        IncludeBinary "Page.ico"
    Image3:
        IncludeBinary "Bas.ico"
    Image4 :
        IncludeBinary "Haut.ico"
    Image5 :
        IncludeBinary "Gauche.ico"
    Image6 :
        IncludeBinary "Droite.ico"
EndDataSection

;- Nombre de code language
NBLang = 81
Dim Language$(NBLang)

Procedure.s InputRequester2(title.s, Message.s, DefaultString.s)
    ParentID = WindowID()
    DisableWindow(ParentID, #True)
    img = CreateImage(#PB_Any, 100, 100)
    UseImage(img)
    StartDrawing(ImageOutput())
        Message = ReplaceString(ReplaceString(Message, #CRLF$, Chr(10)), Chr(13), Chr(10))
        nbl = CountString(Message, Chr(10)) + 1
        If nbl > 1
            For a = 1 To nbl
                If TextLength(StringField(message, a, Chr(10))) > lon
                    lon = TextLength(StringField(message, a, Chr(10))) / 1.2
                EndIf
            Next
        Else
            lon = TextLength(message) / 1.2
        EndIf
        ht = nbl * 13
    StopDrawing()
    FreeImage(img)
    win = OpenWindow(#PB_Any, 0, 0, lon, 80 + ht, #PB_Window_ScreenCentered, title)
    CreateGadgetList(WindowID(win))
    AddKeyboardShortcut(win, #PB_Shortcut_Return, #Enter)
    WindowWidth = WindowWidth()
    WindowHeight = WindowHeight()
    TextGadget(#PB_Any, 10, 10, WindowWidth - 20, ht, Message)
    string = StringGadget(#PB_Any, 5, WindowHeight - 60, WindowWidth - 10, 20, DefaultString)
    button = ButtonGadget(#PB_Any, (WindowWidth - 60) / 2, WindowHeight - 30, 60, 20, "OK", #PB_Button_Default)
    SetWindowPos(WindowID(win), #HWND_TOP)
    Repeat
        Select WaitWindowEvent()
            Case #PB_Event_Menu
                Select EventMenuID()
                    Case #Enter
                        Result$ = GetGadgetText(string)
                        quit = 1
                EndSelect
            Case #PB_EventGadget
                Select EventGadgetID()
                    Case button
                        Result$ = GetGadgetText(string)
                        quit = 1
                EndSelect
        EndSelect
    Until quit = 1
    CloseWindow(win)
    DisableWindow(ParentID, #False)
    SetWindowPos(ParentID, #HWND_TOP)
    ProcedureReturn Result$
EndProcedure

#TVN_BEGINDRAG = -407
#TVN_BEGINRDRAG = -408
#TVS_DISABLEDRAGDROP = $10
#Drag_LeftMouse = 1
#Drag_RightMouse = 2
#ListIcon = 3

Global hWndTV.l, DropProc.l, DragDropMode.l, hDragIml.l, DragItem.l

Procedure.l DragDropCallback(Window.l, Message.l, wParam.l, lParam.l)
    Protected DoDrag.l, DropX.l, DropY.l, hItem.l, hItem2.l, dItem.l
    result = #PB_ProcessPureBasicEvents
    Select Message
        Case #WM_NOTIFY
            *lp.NMHDR = lParam
            If *lp\code = #TVN_BEGINDRAG And (DragDropMode & #Drag_LeftMouse) : DoDrag = #True : EndIf
            If *lp\code = #TVN_BEGINRDRAG And (DragDropMode & #Drag_RightMouse) : DoDrag = #True : EndIf
            If DoDrag
                *pnmtv.NMTREEVIEW = lParam
                DragItem = *pnmtv\itemNew\hItem
                hDragIml = SendMessage_(hWndTV, #TVM_CREATEDRAGIMAGE, 0, DragItem)
                SendMessage_(hWndTV, #TVM_SELECTITEM, #TVGN_CARET, #Null)
                ImageList_BeginDrag_(hDragIml, 0, 0, 0)
                ImageList_DragEnter_(GetParent_(hWndTV), 0, 0)
                ImageList_DragShowNolock_(#True)
                ImageList_DragLeave_(hWndTV)
                ShowCursor_(#False)
                SetCapture_(GetParent_(hWndTV))
                SendMessage_(hWndTV, #TVM_SELECTITEM, #TVGN_CARET, DragItem)
            EndIf
        Case #WM_MOUSEMOVE
            If hDragIml
                DropX = PeekW( @lParam)
                DropY = PeekW( @lParam + 2)
                ImageList_DragMove_(DropX, DropY + 20)
                ImageList_DragShowNolock_(#False)
                ImageList_DragShowNolock_(#True)
            EndIf
        Case #WM_LBUTTONUP
            If hDragIml And (DragDropMode & #Drag_LeftMouse)
                ImageList_EndDrag_()
                ReleaseCapture_()
                ShowCursor_(#True)
                ImageList_Destroy_(hDragIml)
                hDragIml = #False
                dItem = 0
                hItem = SendMessage_(hWndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
                While hItem <> DragItem
                    hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem)
                    Repeat
                        If hItem2 = #Null : hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem) : EndIf
                        If hItem2 = #Null : hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_PARENT, hItem) : EndIf
                    Until hItem2 <> #Null
                    hItem = hItem2
                    dItem + 1
                Wend
                CallFunctionFast(DropProc, WindowMouseX(), WindowMouseY(), #Drag_LeftMouse, dItem)
            EndIf
        Case #WM_RBUTTONUP
            If hDragIml And (DragDropMode & #Drag_RightMouse)
                ImageList_EndDrag_()
                ReleaseCapture_()
                ShowCursor_(#True)
                ImageList_Destroy_(hDragIml)
                hDragIml = #False
                dItem = 0
                hItem = SendMessage_(hWndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
                While hItem <> DragItem
                    hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem)
                    Repeat
                        If hItem2 = #Null : hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem) : EndIf
                        If hItem2 = #Null : hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_PARENT, hItem) : EndIf
                    Until hItem2 <> #Null
                    hItem = hItem2
                    dItem + 1
                Wend
                CallFunctionFast(DropProc, WindowMouseX(), WindowMouseY(), #Drag_RightMouse, DragItem)
            EndIf
    EndSelect
    ProcedureReturn result
EndProcedure

Procedure.l EnableDragDrop(TVGadget.l, DragMode.l, DropProcedure.l)
    Protected Style.l, hIml.l
    hWndTV = GadgetID(TVGadget)
    DropProc = DropProcedure
    DragDropMode = DragMode
    Style = GetWindowLong_(hWndTV, #GWL_STYLE)
    Style = Style & ( ~#TVS_DISABLEDRAGDROP)
    SetWindowLong_(hWndTV, #GWL_STYLE, Style)
    SetWindowCallback( @DragDropCallback())
    ProcedureReturn #True
EndProcedure

Procedure DropProcedure(X.l, Y.l, Button.l, Item.l)
    MSGP("Fonction future", "La fonction 'Drag and drop' pour trier directement à la souris les éléments de la liste sera insérée dans la prochaine version :)",0,4)
    If Button = #Drag_LeftMouse
        gx = GadgetX(#tree_0)
        gy = GadgetY(#Tree_0)
        lx = GadgetWidth(#Tree_0)
        ly = GadgetHeight(#Tree_0)
        If x > Gx And x < gx + lx
            If y > gy And y < gy + ly
                ;MSG( Str(x) + " ; " + Str(y))
            EndIf
        EndIf
    EndIf
EndProcedure

Structure finfo
    FunName.s
    Args.s
    HelpLine.s
EndStructure
Structure s5
    name.s
    lien.s
    page.s
    Args.s
    Aide.s
EndStructure
NewList allfunctions.finfo()
NewList TreeFonctions.s5()

Structure Seeker
    StructureUnion
    b.b
    w.w
    l.l
    EndStructureUnion
EndStructure

Procedure ChargLib(LibFile$)
    LibName$ = GetFilePart(LibFile$)
    If ReadFile(0, LibFile$)
        LibSize = Lof()
        *LibHeader = AllocateMemory(LibSize)
        ReadData(*LibHeader, LibSize)
        CloseFile(0)
        *LibEnd = *LibHeader + LibSize
        *LHSeeker.Seeker = *LibHeader
        If *LHSeeker\l = 'PURE' And PeekL(*LHSeeker + 8) = 'LIB3' And PeekL(*LHSeeker + 16) = '3BIL'
            *LHSeeker.Seeker = *LibHeader + 20
            While *LHSeeker\b <> 0 : *LHSeeker + 1 : Wend
            *LHSeeker + 2
            If *LHSeeker >= *LibEnd : ProcedureReturn : EndIf
            nDLL = *LHSeeker\b
            If nDLL
                For i = 1 To nDLL
                    *LHSeeker + 1
                    DLL$ + ", " + PeekS(*LHSeeker)
                    *LHSeeker + Len(PeekS(*LHSeeker))
                Next i
                DLL$ = Right(DLL$, Len(DLL$) - 2)
                *LHSeeker + 1
            EndIf
            *LHSeeker + 1
            While *LHSeeker\b <> 0 : *LHSeeker + 1 : Wend
            *LHSeeker + 1
            If *LHSeeker >= *LibEnd : ProcedureReturn : EndIf
            nPL = *LHSeeker\b
            If nPL
                For i = 1 To nPL
                    *LHSeeker + 1
                    nPL$ + ", " + PeekS(*LHSeeker)
                    *LHSeeker + Len(PeekS(*LHSeeker))
                Next i
                nPL$ = Right(nPL$, Len(nPL$) - 2)
            EndIf
            *LHSeeker + 1
            If *LHSeeker >= *LibEnd : ProcedureReturn : EndIf
            While PeekL(*LHSeeker) <> 'PURE' And PeekL(*LHSeeker + 8) <> 'DAT1'
                AddElement(allfunctions())
                allfunctions()\FunName = PeekS(*LHSeeker)
                *LHSeeker + Len(allfunctions()\FunName) + 1
                *LHSeeker + * LHSeeker\b + 5
                While *LHSeeker\b = 0 : *LHSeeker + 1 : Wend
                allfunctions()\Args = ""
                allfunctions()\HelpLine = ""
                If *LHSeeker\b = '('
                    arging = 1
                    While *LHSeeker\b <> 0
                        If *LHSeeker\b = '-'
                            arging = 0
                        EndIf
                        If arging
                            allfunctions()\Args + Chr(*LHSeeker\b)
                        Else
                            allfunctions()\HelpLine + Chr(*LHSeeker\b)
                        EndIf
                        *LHSeeker + 1
                    Wend
                    allfunctions()\Args = LTrim(RTrim(allfunctions()\Args))
                    allfunctions()\HelpLine = LTrim(RTrim(RemoveString(allfunctions()\HelpLine, "- ")))
                    *LHSeeker + 1
                EndIf
            Wend
        EndIf
        FreeMemory(*LibHeader)
    EndIf
    ClearList(TreeFonctions())
    ForEach allfunctions()
        fonctrouve = 0
        fonc$ = allfunctions()\FunName
        ForEach TreeFonctions()
            If TreeFonctions()\name = fonc$
                fonctouve = 1
            EndIf
        Next
        If fonctrouve = 0 And fonc$ <> ""
            AddElement(TreeFonctions())
            TreeFonctions()\name = allfunctions()\funname
            TreeFonctions()\Args = allfunctions()\Args
            TreeFonctions()\Aide = allfunctions()\HelpLine
        EndIf
    Next
    ClearList(allfunctions())
    ProcedureReturn 1
EndProcedure

Procedure GetEditorSelectedTextStart(Editor)
SendMessage_(GadgetID(Editor),#EM_GETSEL,@CSP, @CEP)
ProcedureReturn CSP
EndProcedure

Procedure GetEditorSelectedTextStop(Editor)
SendMessage_(GadgetID(Editor),#EM_GETSEL,@CSP, @CEP)
ProcedureReturn CEP
EndProcedure

Procedure SetEditorSelect(Editor, SelectStart, SelectEnd)
ProcedureReturn SendMessage_(GadgetID(Editor), #EM_SETSEL, Selectstart,Selectend)
EndProcedure
            
Procedure.s GetEditorSelectedText(Editor)
ProcedureReturn Mid(GetGadgetText(Editor),GetEditorSelectedTextStart(Editor)+1,GetEditorSelectedTextStop(Editor)-GetEditorSelectedTextStart(Editor))
EndProcedure

Procedure.l EditorChang(Editor, KeyStart$, KeyStop$,Text$)
TextSelect$=GetEditorSelectedText(Editor)
Editor$=GetGadgetText(Editor)
If TextSelect$
TextAvant$=Left(Editor$, GetEditorSelectedTextStart(Editor))
TextApres$=Right(Editor$, Len(Editor$)-GetEditorSelectedTextStop(Editor))
If text$<>""
TextSelect$=text$
EndIf
Else
TextAvant$=Left(Editor$, Editor_CursorPos(Editor)+CountString(Editor$,Chr(13)))
TextApres$=Right(Editor$,Len(Editor$)-Editor_CursorPos(Editor)-CountString(Editor$,Chr(13)))
TextSelect$=text$
EndIf
ProcedureReturn SetGadgetText(Editor, Textavant$+keyStart$+TextSelect$+keyStop$+TextApres$)
EndProcedure

Procedure Fenetre_Principale()
NewList KeyWords.s()
AddElement(KeyWords()) : KeyWords()="<Center>"
AddElement(KeyWords()) : KeyWords()="</Center>"
AddElement(KeyWords()) : KeyWords()="<Title1>"
AddElement(KeyWords()) : KeyWords()="</Title1>"
AddElement(KeyWords()) : KeyWords()="<Title2>"
AddElement(KeyWords()) : KeyWords()="</Title2>"
AddElement(KeyWords()) : KeyWords()="<Title3>"
AddElement(KeyWords()) : KeyWords()="</Title3>"
AddElement(KeyWords()) : KeyWords()="<Title4>"
AddElement(KeyWords()) : KeyWords()="</Title4>"
AddElement(KeyWords()) : KeyWords()="<Title5>"
AddElement(KeyWords()) : KeyWords()="</Title5>"
AddElement(KeyWords()) : KeyWords()="<Title6>"
AddElement(KeyWords()) : KeyWords()="</Title6>"
AddElement(KeyWords()) : KeyWords()="<Bold>"
AddElement(KeyWords()) : KeyWords()="</Bold>"
AddElement(KeyWords()) : KeyWords()="<Italic>"
AddElement(KeyWords()) : KeyWords()="</Italic>"
AddElement(KeyWords()) : KeyWords()="<Link="
AddElement(KeyWords()) : KeyWords()="<=>"
AddElement(KeyWords()) : KeyWords()="</Link>"
AddElement(KeyWords()) : KeyWords()="<Color="
AddElement(KeyWords()) : KeyWords()="</Color>"
AddElement(KeyWords()) : KeyWords()="<Image>"
AddElement(KeyWords()) : KeyWords()="</Image>" 
    If CreatePopupMenu(#Popup_0)
        MenuItem(#Popup_1, Language$(66))
        MenuItem(#Popup_2, Language$(67))
        MenuItem(#Popup_3, Language$(68))
        MenuItem(#Popup_4, Language$(69))
        MenuItem(#Popup_5, Language$(70))
        MenuItem(#Popup_6, Language$(71))
    EndIf
    If OpenWindow(#Window_0, 0, 0, 700, 690, #PB_Window_Invisible | #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered, Titre$ + " - Projet1")
        WindowID = WindowID(#Window_0)
        If CreateMenu(#MenuBar_0, WindowID)
            MenuTitle(Language$(0)) ; Fichiers
            MenuItem(#MENU_1, Language$(1)) ; Nouveau
            MenuItem(#MENU_2, Language$(2)) ; Charger
            MenuItem(#MENU_3, Language$(3)) ; Sauver
            MenuItem(#MENU_4, Language$(4)) ; Sauver sous
            MenuBar()
            OpenSubMenu(Language$(5)) ; Fichiers récents
                If fichier_recent
                    For a = 0 To fichier_recent
                        MenuItem(#PB_Any, Language$(6)) ; récent
                    Next
                EndIf
            CloseSubMenu()
            MenuBar()
            MenuItem(#MENU_8, Language$(7)) ; Quitter
            MenuTitle(Language$(13)) ; Creation
            MenuItem(#MENU_17, Language$(14)) ; Aperçu page
            MenuItem(#MENU_18, Language$(15)) ; aperçu de l'aide
            MenuBar()
            MenuItem(#MENU_19, Language$(16)) ; créer l'aide
            MenuTitle(Language$(8)) ; preferences
            OpenSubMenu(Language$(9)) ; langues
                MenuItem(#MENU_12, Language$(10)) ; français
                MenuItem(#MENU_13, Language$(11)) ; anglais
            CloseSubMenu()
            MenuItem(#MENU_14, Language$(12)) ; preferences
            MenuBar()
            MenuItem(#MENU_11, Language$(36)) ; Aide
            MenuItem(#MENU_10,Language$(76)) ; Mise à jour
            MenuItem(#MENU_7, Language$(37)) ; A propos
        EndIf
        If CreateStatusBar(#StatusBar_0, WindowID)
        AddStatusBarField(50)
        AddStatusBarField(700)
        EndIf
        AnimateWindow(WindowID, 250, #AW_VER_POSITIVE)
        If CreateGadgetList(WindowID)
            
            Frame3DGadget(#Frame3D_6, 10, 10, 680, 80, Language$(19)) ; Le projet
            TextGadget(#Text_0, 20, 32, 50, 20, Language$(20)) ; projet
            StringGadget(#String_3, 70, 30, 500, 20, "", #PB_String_ReadOnly) ; projet
            TextGadget(#Text_1, 20, 62, 50, 20, Language$(21)) ; Librarie
            StringGadget(#String_1, 70, 60, 500, 20, "") ; Librairie
            ButtonGadget(#Button_0, 580, 60, 100, 20, Language$(22)) ; Parcourir
            
            ButtonGadget(#Ajouter, 10, 100, 95, 20, Language$(64))
            ButtonGadget(#Supprimer, 115, 100, 95, 20, Language$(65))
            ButtonImageGadget(#Bas,10,130,42,20,Image3)
            ButtonImageGadget(#Haut,62,130,42,20,Image4)
            ButtonImageGadget(#Gauche,116,130,42,20,Image5)
            ButtonImageGadget(#Droite,168,130,42,20,Image6)
            TreeGadget(#Tree_0, 10, 160, 200, 480, #PB_Tree_AlwaysShowSelection)
            
            Frame3DGadget(#Frame3D_3, 220, 100, 470, 110, Language$(18))
            ButtonGadget(#Centrer, 225, 125, 60, 20, Language$(23))
            ButtonGadget(#Titre, 290, 125, 60, 20, Language$(24))
            ButtonGadget(#Couleur, 355, 125, 60, 20, Language$(25))
            ButtonGadget(#Gras, 420, 125, 60, 20, Language$(26))
            ButtonGadget(#Italic, 485, 125, 60, 20, Language$(27))
            ButtonGadget(#Lien, 550, 125, 60, 20, Language$(28))
            ButtonGadget(#Image, 615, 125, 60, 20, Language$(29))
            ButtonGadget(#Lib, 225, 155, 60, 20, Language$(17))
            ButtonGadget(#DLL, 290, 155, 60, 20, Language$(53))
            ButtonGadget(#Fonction, 355, 155, 60, 20, Language$(62))
            ButtonGadget(#Arguments, 420, 155, 60, 20, Language$(58))
            ButtonGadget(#AideRapide, 485, 155, 60, 20, Language$(56))
            EditorGadget(#Editor_0, 220, 220, 470, 420)
            Editor_ColorBackground(#Editor_0, Color)
            LoadFont(#Font_0,Police,TaillePolice)
            SetGadgetFont(#Editor_0,FontID())
            SetWindowPos(WindowID, #HWND_TOP)
            ProcedureReturn windowid
        EndIf
    EndIf
EndProcedure

Procedure Preference()
DisableWindow(#Window_0,#True)
CreateImage(#Image_7,140,30)
CreateImage(#Image_8,140,30)
CreateImage(#Image_9,140,30)
UseImage(#Image_7)
StartDrawing(ImageOutput())
Box(0,0,140,30,Color)
StopDrawing()
UseImage(#Image_8)
StartDrawing(ImageOutput())
Box(0,0,140,30,ColorText)
StopDrawing()
UseImage(#Image_9)
StartDrawing(ImageOutput())
Box(0,0,140,30,ColorKeyWords)
StopDrawing()
  If OpenWindow(#Window_1, 0, 0, 290, 190,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_WindowCentered , language$(12),WindowID(#Window_0))
    If CreateGadgetList(WindowID())
      CheckBoxGadget(#CheckBox_100, 10, 160, 180, 20, Language$(77))
      ButtonGadget(#Button_100, 10, 10, 120, 30, Language$(78))
      ButtonGadget(#Button_101, 10, 50, 120, 30, Language$(79))
      ButtonGadget(#Button_102, 10, 90, 120, 30, Language$(80))
      ButtonGadget(#Button_103, 10, 130, 120, 20, Language$(81))
      UseImage(#Image_7)
      ImageGadget(#Image_101, 140, 10, 140, 30, ImageID())
      UseImage(#Image_8)
      ImageGadget(#Image_100, 140, 50, 140, 30, ImageID())
      UseImage(#Image_9)
      ImageGadget(#Image_102, 140, 90, 140, 30, ImageID())
      StringGadget(#String_100, 140, 130, 140, 20, "")
      Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()

EndSelect
Case #PB_Event_CloseWindow
quit=1
EndSelect
Until quit=1
CloseWindow(#Window_1)
DisableWindow(#Window_0,#False)
SetWindowPos(WindowID(#Window_0),#HWND_TOP)
    EndIf
  EndIf
EndProcedure

Procedure ColorText()
; procedure séparée pour obtenir la position du mot clef
; réécriture des mots clefs donc recherche des mots clefs en mode lcase (lcase pour tout le texte)
t$=GetGadgetText(#Editor_0)
nlig=CountString(t$,Chr(13))+1
ncold=Len(StringField(t$,nlig+1,Chr(13)))
Editor_ColorText(#Editor_0,1,1,-1,-1,ColorText)

ForEach KeyWords()
    For a=0 To nlig
    lig$=StringField(t$,a+1,Chr(13))
        If FindString(lig$,KeyWords(),0)
            xd=0
            For b=1 To CountString(lig$,KeyWords())
                xd=FindString(lig$,KeyWords(),xd+1) ;+a
                yd=Len(KeyWords())+xd
                StatusBarText(#StatusBar_0,1,Str(xd)+" ; "+Str(yd))
                Editor_ColorText(#Editor_0,a,xd,a,yd,ColorKeyWords)
            Next
        EndIf
    Next
Next
EndProcedure

Procedure ReadCatalog(Filename$)
    If ReadFile(0, Filename$)
        If ReadString() = "Catalog"
            For k = 0 To NBLang
                Language$(k) = ReadString()
            Next
        EndIf
        CloseFile(0)
    EndIf
EndProcedure

Procedure RestoreCatalog()
    Restore BaseLanguage
    For k = 0 To NBLang
        Read Language$(k)
    Next
    
    DataSection
        BaseLanguage :
        Data$ "Fichier"
        Data$ "Nouveau projet"
        Data$ "Charger un projet"
        Data$ "Sauvegarder"
        Data$ "Sauvegarder sous"
        Data$ "Fichiers récents"
        Data$ "Projet"
        Data$ "Quitter"
        Data$ "Préférences"
        Data$ "Langue"
        Data$ "Anglais" ; 10
        Data$ "Français"
        Data$ "Préférences"
        Data$ "Création"
        Data$ "Aperçu de la page"
        Data$ "Aperçu de l'aide"
        Data$ "Créer l'aide"
        Data$ "Librairies"
        Data$ "Les outils"
        Data$ "Le projet"
        Data$ "Projet :" ; 20
        Data$ "Librarie :"
        Data$ "Parcourir..."
        Data$ "Centrer"
        Data$ "Titre"
        Data$ "Couleur"
        Data$ "Gras"
        Data$ "Italique"
        Data$ "Lien"
        Data$ "Image"
        Data$ "Il y a une erreur :-(" + #CRLF$ + #CRLF$ + "Description : " ; 30
        Data$ #CRLF$ + "Numéro de la ligne ou s'est produite l'erreur : "
        Data$ #CRLF$ + "Nombres total d'erreurs : "
        Data$ #CRLF$ + #CRLF$ + "Le programme va maintenant se terminer." + #CRLF$ + #CRLF$ + "Voulez-vous envoyer le rapport d'erreur au programmeur?"
        Data$ "Erreur!"
        Data$ "Rapport d'erreurs de "
        Data$ "Aide"
        Data$ "A propos"
        Data$ "Choisissez une image"
        Data$ "Images"
        Data$ "Ouvrez la librairie" ; 40
        Data$ "Librairie"
        Data$ "(Si un texte est sélectionné, la commande va être écrite autour de ce texte)"
        Data$ "Insérer la commande '"
        Data$ "Entrez le lien ci-dessous"
        Data$ "Charger / recharger la librairie"
        Data$ "Ajouter un dossier à la liste"
        Data$ "Supprimer un dossier de la liste"
        Data$ "Liste de toutes les commandes contenues dans la librairie"
        Data$ "Ecrivez ici votre page"
        Data$ "Ecrivez ici l'adresse de la librairie" ; 50
        Data$ "Le nom du projet"
        Data$ "Impossible d'ouvrir la librairie selectionnée"
        Data$ "DLL"
        Data$ "Insérer les noms des librairies PureBasic utilisées"
        Data$ "Insérer les noms des librairies externes utilisées"
        Data$ "Aide"
        Data$ "Insérer l'aide rapide de la fonction"
        Data$ "Arguments"
        Data$ "Insérer les arguments de la fonction"
        Data$ "Ajouter un dossier" ; 60
        Data$ "Entrer le nom du dossier"
        Data$ "Fonction"
        Data$ "Insérer le nom de la fonction en cours"
        Data$ "Ajouter dossier"
        Data$ "Supprimer dossier"
        Data$ "Titre1 : 8 pixels"
        Data$ "Titre2 : 10 pixels"
        Data$ "Titre3 : 12 pixels"
        Data$ "Titre4 : 14 pixels"
        Data$ "Titre5 : 18 pixels" ; 70
        Data$ "Titre6 : 24 pixels"
        Data$ "Déplacer l'élément en cours vers le bas"
        Data$ "Déplacer l'élément en cours vers le haut"
        Data$ "Déplacer l'élément en cours vers la gauche"
        Data$ "Déplacer l'élément en cours vers la droite"
        Data$ "Mise à jour"
        Data$ "Activer  la colorisation syntaxique"
        Data$ "Couleur de l'arrière plan"
        Data$ "Couleur du texte"
        Data$ "Couleur des mots clés" ; 80
        Data$ "Police de l'éditeur"
    EndDataSection
EndProcedure

RestoreCatalog()
If Fenetre_Principale()
    EnableDragDrop(#Tree_0, #Drag_LeftMouse | #Drag_RightMouse, @DropProcedure())
    tps=ElapsedMilliseconds()
    Repeat
        Select WaitWindowEvent()
            Case #PB_EventMenu
                Select EventMenuID()
                    Case #Popup_1
                        EditorChang(#Editor_0, "<Title1>","</Title1>","")
                    Case #Popup_2
                        EditorChang(#Editor_0, "<Title2>","</Title2>","")
                    Case #Popup_3
                        EditorChang(#Editor_0, "<Title3>","</Title3>","")
                    Case #Popup_4
                        EditorChang(#Editor_0, "<Title4>","</Title4>","")
                    Case #Popup_5
                        EditorChang(#Editor_0, "<Title5>","</Title5>","")
                    Case #Popup_6
                        EditorChang(#Editor_0, "<Title6>","</Title6>","")
                    Case #MENU_8 ; Quitter
                        quit = 1
                    Case #MENU_14 ; Preference
                    Preference()
                EndSelect
                
            Case #PB_EventGadget
                Select EventGadgetID()
                    Case #Centrer
                        EditorChang(#Editor_0, "<Center>","</Center>","")
                    Case #Titre
                        DisplayPopupMenu(#Popup_0, WindowID(#Window_0), WindowX() + GadgetX(#Titre) + 5, WindowY() + GadgetY(#Titre) + 70)
                    Case #Couleur
                        col = ColorRequester(Def_Couleur)
                        If col >= 0
                            EditorChang(#Editor_0, "<Color=" + Color2HTM(col)+ "<=>","</Color>","")
                        EndIf
                    Case #Gras
                         EditorChang(#Editor_0, "<Bold>","</Bold>","")
                    Case #Italic
                        EditorChang(#Editor_0, "<Italic>","</Italic>","")
                    Case #Lien
                        link$ = InputRequester2(Titre$, Language$(44) + #CRLF$ + "ex : http://www.myweb.com/, ou mailto:webmaster@myweb.com, %CmdName%, ...", "")
                        If link$
                            EditorChang(#Editor_0, "<Link=" + link$ + "<=>","</Link>","")
                        EndIf
                    Case #Image
                        resu = ReadFile(#PB_Any, GetSelectedText())
                        If resu
                            CloseFile(resu)
                            EditorChang(#Editor_0, "<Image>","</Image>","")
                        Else
                            Image$ = OpenFileRequester(Language$(38), "", Language$(39) + " (bmp, jpg, png, tga, gif, tiff, ico)|*.ico;*.bmp;*.jpg;*.jpeg;*.png;*.gif;*.tga;*.tiff", 0)
                            resu = ReadFile(#PB_Any, image$)
                            If resu
                                EditorChang(#Editor_0, "<Image>","</Image>",Image$)
                            EndIf
                        EndIf
                    Case #Lib
                        EditorChang(#Editor_0, "","",nPL$)
                    Case #DLL
                        EditorChang(#Editor_0, "","",DLL$)
                    Case #Fonction
                        fonc$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = fonc$
                                EditorChang(#Editor_0, "","",TreeFonctions()\name)
                            EndIf
                        Next
                    Case #AideRapide
                        fonc$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = fonc$
                                EditorChang(#Editor_0, "","",TreeFonctions()\aide)
                            EndIf
                        Next
                    Case #Arguments
                        fonc$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = fonc$
                                EditorChang(#Editor_0, "","",TreeFonctions()\args)
                            EndIf
                        Next
                        
                    Case #Button_0 ; PARCOURIR
                        file$ = GetGadgetText(#String_1)
                        If GetExtensionPart(file$) = ""
                            resu = ReadFile(#PB_Any, file$)
                            If Resu
                                CloseFile(resu)
                            Else
                                file$ = GetPureBasicPath() + "PureLibraries\UserLibraries\"
                            EndIf
                        Else
                            file$ = GetPureBasicPath() + "PureLibraries\UserLibraries\"
                        EndIf
                        
                        file$ = OpenFileRequester(Language$(40), file$, Language$(41) + "|*.*", 0)
                        
                        If GetExtensionPart(file$) = ""
                            resu = ReadFile(#PB_Any, file$)
                            If Resu
                                CloseFile(resu)
                                SetGadgetText(#String_1, file$)
                                If ChargLib(file$)
                                    ClearGadgetItemList(#Tree_0)
                                    AddGadgetItem(#Tree_0, -1, LibName$, Image1)
                                    OpenTreeGadgetNode(#Tree_0)
                                    SetGadgetText(#String_3, LibName$)
                                    ForEach TreeFonctions()
                                        AddGadgetItem(#Tree_0, -1, TreeFonctions()\name, Image2)
                                    Next
                                    CloseTreeGadgetNode(#Tree_0)
                                Else
                                    MSGP(Language$(34), Language$(53), 0, 3)
                                EndIf
                            Else
                                MSGP(Language$(34), Language$(53), 0, 3)
                            EndIf
                        Else
                            MSGP(Language$(34), Language$(53), 0, 3)
                        EndIf
                    Case #Ajouter
                        Nom$ = InputRequester2(Language$(60), Language$(61), "")
                        If nom$
                            nom2$=GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                            resu=0
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = nom2$
                                resu=1
                            EndIf
                        Next
                        If resu=0
                        OpenTreeGadgetNode(#Tree_0,GetGadgetState(#Tree_0))
                         AddGadgetItem(#Tree_0, GetGadgetState(#Tree_0)+1, Nom$, Image1)
                            CloseTreeGadgetNode(#Tree_0,GetGadgetState(#Tree_0))
                        Else
                         AddGadgetItem(#Tree_0, -1, Nom$, Image1)
                        EndIf
                        EndIf
                        
                    Case #Supprimer
                        nom$=GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                            resu=0
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = nom$
                                resu=1
                            EndIf
                        Next
                        If resu=0
                        RemoveGadgetItem(#Tree_0,GetGadgetState(#Tree_0))
                        EndIf
                     Case #Bas
                         nom$=GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                            resu=0
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = nom$
                                resu=1
                            EndIf
                        Next
                        If resu=1
                        state=GetGadgetState(#Tree_0)
                        RemoveGadgetItem(#Tree_0,state)
                        If state=CountGadgetItems(#Tree_0)-1 : state=-1 : EndIf
                        AddGadgetItem(#Tree_0,state+1,nom$,Image2)
                        SetGadgetState(#Tree_0,state+1)
                        EndIf
                    Case #Haut
                         nom$=GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                            resu=0
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = nom$
                                resu=1
                            EndIf
                        Next
                        If resu=1
                        state=GetGadgetState(#Tree_0)
                        RemoveGadgetItem(#Tree_0,state)
                        If state=0 : state=CountGadgetItems(#Tree_0) : EndIf
                        AddGadgetItem(#Tree_0,state-1,nom$,Image2)
                        SetGadgetState(#Tree_0,state-1)
                        EndIf
                    
                    Case #Tree_0
                        ForEach TreeFonctions()
                            If nom$ = TreeFonctions()\name
                                TreeFonctions()\page = GetGadgetText(#Editor_0)
                                TreeFonctions()\page = ReplaceString(TreeFonctions()\page, Chr(13), "¤|¤")
                            EndIf
                        Next
                        nom$ = GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                        ForEach TreeFonctions()
                            If TreeFonctions()\name = nom$
                                SetGadgetText(#Editor_0,ReplaceString(TreeFonctions()\page, "¤|¤", Chr(13)))
                            EndIf
                        Next
                    
                EndSelect
            Case #PB_Event_CloseWindow
                quit = 1
                
            Default
            If ElapsedMilliseconds()-tps>50
            ColorText()
            EndIf
                If IsMouseOver(GadgetID(#Centrer))
                    StatusBarText(#StatusBar_0, 1, Language$(43) + Language$(23) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Titre))
                    StatusBarText(#StatusBar_0, 1, Language$(43) + Language$(24) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Couleur))
                    StatusBarText(#StatusBar_0, 1, Language$(43) + Language$(25) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Gras))
                    StatusBarText(#StatusBar_0, 1, Language$(43) + Language$(26) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Italic))
                    StatusBarText(#StatusBar_0, 1, Language$(43) + Language$(27) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Lien))
                    StatusBarText(#StatusBar_0, 1, Language$(43) + Language$(28) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Image))
                    StatusBarText(#StatusBar_0, 1, Language$(43) + Language$(29) + "' " + Language$(42))
                ElseIf IsMouseOver(GadgetID(#Button_0))
                    StatusBarText(#StatusBar_0, 1, Language$(45))
                ElseIf IsMouseOver(GadgetID(#Ajouter))
                    StatusBarText(#StatusBar_0, 1, Language$(46))
                ElseIf IsMouseOver(GadgetID(#Supprimer))
                    StatusBarText(#StatusBar_0, 1, Language$(47))
                ElseIf IsMouseOver(GadgetID(#Tree_0))
                    StatusBarText(#StatusBar_0, 1, Language$(48))
                ElseIf IsMouseOver(GadgetID(#String_1))
                    StatusBarText(#StatusBar_0, 1, Language$(50))
                ElseIf IsMouseOver(GadgetID(#Editor_0))
                    StatusBarText(#StatusBar_0, 0, Str(Editor_CursorX(#Editor_0))+" ; "+Str(Editor_CursorY(#Editor_0)),#PB_StatusBar_Center)
                    StatusBarText(#StatusBar_0, 1, Language$(49))
                ElseIf IsMouseOver(GadgetID(#String_3))
                    StatusBarText(#StatusBar_0, 1, Language$(51))
                ElseIf IsMouseOver(GadgetID(#Lib))
                    StatusBarText(#StatusBar_0, 1, Language$(54))
                ElseIf IsMouseOver(GadgetID(#Dll))
                    StatusBarText(#StatusBar_0, 1, Language$(55))
                ElseIf IsMouseOver(GadgetID(#AideRapide))
                    If GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                    t$="'"+GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)+"'"
                    EndIf
                    StatusBarText(#StatusBar_0, 1, Language$(57) + t$)
                ElseIf IsMouseOver(GadgetID(#Arguments))
                    If GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)
                    t$="'"+GetGadgetItemText(#Tree_0, GetGadgetState(#Tree_0), 0)+"'"
                    EndIf
                    StatusBarText(#StatusBar_0, 1, Language$(59) + t$)
                ElseIf IsMouseOver(GadgetID(#Fonction))
                    StatusBarText(#StatusBar_0, 1, Language$(63))
                ElseIf IsMouseOver(GadgetID(#Bas))
                    StatusBarText(#StatusBar_0, 1, Language$(72))
                ElseIf IsMouseOver(GadgetID(#Haut))
                    StatusBarText(#StatusBar_0, 1, Language$(73))
                ElseIf IsMouseOver(GadgetID(#Gauche))
                    StatusBarText(#StatusBar_0, 1, Language$(74))
                ElseIf IsMouseOver(GadgetID(#Droite))
                    StatusBarText(#StatusBar_0, 1, Language$(75))
                Else
                    StatusBarText(#StatusBar_0, 0, Str(Editor_CursorX(#Editor_0))+" ; "+Str(Editor_CursorY(#Editor_0)),#PB_StatusBar_Center)
                    StatusBarText(#StatusBar_0, 1, Titre$+" "+version$)
                EndIf
        EndSelect
    Until quit = 1
    AnimateWindow(WindowID, 250, #AW_BLEND | #AW_HIDE)
EndIf
End
CatchError :
If MSGP(Language$(34), Language$(30) + GetErrorDescription() + Language$(31) + Str(GetErrorLineNR()) + Language$(32) + Str(GetErrorCounter()) + Language$(33), 4, 1) = 6
    OpenMailProgram("LGGillou@hotmail.com", "", Language$(35) + Titre$ + " " + version$, GetErrorDescription() + " ; " + Str(GetErrorLineNR()) + " ; " + Str(GetErrorCounter()))
EndIf
End
Les icônes
http://lggillou.free.fr/modules/archive ... reAide.zip
Répondre