Page 1 sur 1

Gestion des clic EplorerTreeGadget & ExplorerListGadget [Ok]

Publié : jeu. 22/avr./2010 15:10
par DarkIchigo
Salut à tous !

j'ai encore un problème (pour changer :? ).

Cette fois ci je n'arrive pas a faire marcher le EventType() qui doit
me permettre de récupérer les clic de la souris.

Je pense ne pas l'avoir placé au bon endroit, d'après mon manque d'expérience
je dirai qu'il entre en "conflit" avec la mise a jour auto du chemin affiché par les
gadgets, de plus le fait d'avoir plusieurs fenêtres filles possibles complique encore
la chose pour mon petit niveau.

J'ai pourtant bien essayé avec l'aide mais la description est très simpliste et
ayant beaucoup de "merdier" dans mon programme, je n'arrive pas à le faire
cohabiter avec le reste du programme.

J'ai aussi effectué une recherche mais je n'ai pas trouvé de quoi régler mon problème
:(

De plus j'ai une réaction étrange de la part du ExplorerListGadget si je sélectionne
un fichier dans le ExplorerTreeGadget adjacent, a savoir que seul le fichier sélectionné
est affiché à présent :

avant :
Image

après :
Image

La je ne sais pas si c'est normal ou si c'est un bug.

Si quelqu'un passant par là peux me donner un petit coup de main, ce serait avec
grand plaisir!

Code : Tout sélectionner

ExamineDesktops()

T_x_Window = DesktopWidth(0)
T_y_Window = DesktopHeight(0)

#Flag = #PB_Window_MaximizeGadget | #PB_Window_Maximize | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_WindowCentered
#Flag_EG = #PB_Explorer_AlwaysShowSelection | #PB_Explorer_NoDriveRequester

Enumeration
   #Window
   #Window_Lov
    
   #Editor_Menu = 20
   #Editor_Menu_Lov
   #Editor_Menu_Fermer
   #Editor_Menu_Quit
   
   #Editor_Lov_Web = 200
   #Editor_Lov_ETG
   #Editor_Lov_ELG
EndEnumeration

Procedure Editor_Lov()
T_x_Window = DesktopWidth(0)
T_y_Window = DesktopHeight(0)  
P_x_ETG = 0
P_y_ETG = 0
T_x_ETG = T_x_Window/3
T_y_ETG = T_y_Window/2
P_x_ELG = T_x_Window/3
P_y_ELG = 0
T_x_ELG = (T_x_Window/3)*2
T_y_ELG = T_y_Window/2

P_x_Web = 0
P_y_Web = T_y_Window/2
T_x_Web = T_x_Window-2
T_y_Web = T_y_Window/2
  MDIGadget(0, 0, 0, 0, 0, 1, 1, #PB_MDI_BorderLess | #PB_MDI_AutoSize)
    AddGadgetItem(0, #Window_Lov, "Lovable")
      SetWindowState(#Window_Lov, #PB_Window_Maximize)
    WebGadget(#Editor_Lov_Web, P_x_Web,P_y_Web, T_x_Web, T_y_Web, "www.google.fr")
    EG_Lov$ = "C:\"
    ExplorerTreeGadget(#Editor_Lov_ETG, P_x_ETG, P_y_ETG, T_x_ETG, T_y_ETG, EG_Lov$)
    ExplorerListGadget(#Editor_Lov_ELG, P_x_ELG, P_y_ELG, T_x_ELG, T_y_ELG, EG_Lov$)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 455, 0)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 100, 1)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 160, 2)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 120, 3)
    
  UseGadgetList(WindowID(#Window)) 
EndProcedure


If OpenWindow(#Window, 0, 0, T_x_Window, T_y_Window, "Programme_main", #Flag)
    
  CreateMenu(#Editor_Menu, WindowID(#Window))
  
    MenuTitle("Fichier")
      MenuItem(#Editor_Menu_Lov, "Lovable" + Chr(9) + "Ctrl+2")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_2, #Editor_Menu_Lov)
      MenuBar()
      MenuItem(#Editor_Menu_Fermer, "Fermer" + Chr(9) + "Ctrl+W")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_W, #Editor_Menu_Fermer)
      MenuBar()
      MenuItem(#Editor_Menu_Quit, "Quitter" + Chr(9) + "Crtl+Q") 
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_Q, #Editor_Menu_Quit)
    
Quit = 0
Repeat
  Event = WaitWindowEvent()
  Select EventWindow()
  
  Case #Window_Lov  
    Select Event
    Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
    Case #PB_Event_Gadget
      Select EventGadget()
      Case #Editor_Lov_ETG : Chemin_ETG_Lov_0$ = GetGadgetText(#Editor_Lov_ETG) : SetGadgetText(#Editor_Lov_ELG , Chemin_ETG_Lov_0$)
        Select EventType()
        Case #PB_EventType_LeftClick 
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ETG,0 ,0) : OpenFile(0, Chemin_ETG_Lov_0$ + File$)
        EndSelect
      Case #Editor_Lov_ELG : Chemin_ELG_Lov_0$ = GetGadgetText(#Editor_Lov_ELG) : SetGadgetText(#Editor_Lov_ETG , Chemin_ELG_Lov_0$)
        Select EventType()
        Case #PB_EventType_LeftClick 
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ELG,0 ,0) : OpenFile(0, Chemin_ELG_Lov_0$ + File$)
        EndSelect
      EndSelect
    EndSelect
              
  Case #Window
    Select Event
    Case #PB_Event_CloseWindow : Quit = 1
      
    Case #PB_Event_Menu
      Select EventMenu()
      Case #Editor_Menu_Lov : Editor_Lov()
      Case #Editor_Menu_Fermer : NumeroFenetre = GetActiveWindow() : FenetreActive = GetGadgetState(NumeroFenetre) : CloseWindow(FenetreActive)
      Case #Editor_Menu_Quit : Quit = 1
      EndSelect
    EndSelect
  EndSelect
Until Quit = 1
EndIf

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : jeu. 22/avr./2010 15:42
par Jacobus
Comme ça...

Code : Tout sélectionner

Case #Window_Lov  
    Select Event
    Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
    Case #PB_Event_Gadget
      Select EventGadget()
      Case #Editor_Lov_ETG
        Select EventType()
        Case #PB_EventType_LeftClick  : Chemin_ETG_Lov_0$ = GetGadgetText(#Editor_Lov_ETG) : SetGadgetText(#Editor_Lov_ELG , Chemin_ETG_Lov_0$)
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ETG,0 ,0) : OpenFile(0, Chemin_ETG_Lov_0$ + File$)
        EndSelect
      Case #Editor_Lov_ELG
        Select EventType()
        Case #PB_EventType_LeftClick : Chemin_ELG_Lov_0$ = GetGadgetText(#Editor_Lov_ELG) : SetGadgetText(#Editor_Lov_ETG , Chemin_ELG_Lov_0$) 
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ELG,0 ,0) : OpenFile(0, Chemin_ELG_Lov_0$ + File$)
        EndSelect
      EndSelect
    EndSelect

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : jeu. 22/avr./2010 19:26
par DarkIchigo
Merci de la réponse, mais j'avais testé et ça ne marche toujours pas, aucune différence chez moi.

Et pour le "comportement étrange" des ExplorerTree & ListGadget c'est normal ou j'ai un pb dans mon code qui fais bugguer?

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : ven. 23/avr./2010 9:30
par Jacobus
J'ai testé avec PB 4.41
Plantage avec ton code, aucun blème après correction ou bien je n'ai pas saisi ce que tu voulais dire....

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : ven. 23/avr./2010 15:23
par DarkIchigo
Chez moi les 2 codes ont exactement le même comportement, le double clic n'a aucun effet et un clic simple "filtre" et ne laisse affiché que l'élément sélectionné comme montré sur les screen du 1er post.

Comprends pas :?

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : ven. 23/avr./2010 16:12
par Jacobus
Pour ouvrir le fichier, OpenFile() est très bien, mais je pense que ce n'est pas ce que tu veux.
Utilises plutôt ceci :

Code : Tout sélectionner

RunProgram(Chemin_ETG_Lov_0$ + File$)
à la place de cela :

Code : Tout sélectionner

OpenFile(0, Chemin_ETG_Lov_0$ + File$)

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : lun. 26/avr./2010 9:49
par DarkIchigo
Merci Jacobus pour le RunProgram() je pensais qu'il fallait obligatoirement lui donner le programme à utiliser, mais en fait il est bien plus simple que ça :D

Et du coup j'avais un pb dans mon code à la selection du nom du fichier à lancer, du coup j'ai apporté une petite modif et ça roule pour le moment.

Code : Tout sélectionner

 Case #Window_Lov   
  Select Event 
  Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
  Case #PB_Event_Gadget
   Select EventGadget()
   Case #Editor_Lov_ETG
    Select EventType()
    Case #PB_EventType_LeftClick       : Chemin_ETG_Lov_0$ = GetGadgetText(#Editor_Lov_ETG) : SetGadgetText(#Editor_Lov_ELG, Chemin_ETG_Lov_0$) 
    Case #PB_EventType_RightClick      : ;menu a mettre 
    Case #PB_EventType_LeftDoubleClick : File_ETG$ = GetGadgetItemText(#Editor_Lov_ETG, GetGadgetState(#Editor_Lov_ETG), 0) : RunProgram(Chemin_ETG_Lov_0$ + File_ETG$) 
    EndSelect 
   Case #Editor_Lov_ELG
    Select EventType() 
    Case #PB_EventType_LeftClick       : Chemin_ELG_Lov_0$ = GetGadgetText(#Editor_Lov_ELG) : SetGadgetText(#Editor_Lov_ETG, Chemin_ELG_Lov_0$) 
    Case #PB_EventType_RightClick      : ;menu a mettre 
    Case #PB_EventType_LeftDoubleClick : File_ELG$ = GetGadgetItemText(#Editor_Lov_ELG, GetGadgetState(#Editor_Lov_ELG), 0) : RunProgram(Chemin_ELG_Lov_0$ + File_ELG$) 
    EndSelect 
   EndSelect 
  EndSelect
Par contre toujour le comportement étrange du ExplorerListGadget() quand ilest mis à jour par le ExplorerTreeGadget().


En gros Merci Jacobus

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : lun. 26/avr./2010 10:16
par DarkIchigo
Ca y est, j'ai compris pourquoi le ELG se comporte comme ça quand je sélectionne un fichier dans le ETG, en fait la fonction
GetGadgetText() pour le ETG renvoi le "Chemin:\Nom.Extention" du fichier et non juste le chemin du répertoire.

Du coup je dois voir comment contourner le pb.

Et puis des fois que je sois pas le seul à avoir le pb si ça peux aider, tant mieux !

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Publié : mar. 27/avr./2010 15:35
par DarkIchigo
Voila du coup j'ai fait comme ça pour contourner le pb au cas ou d'autres débutants aient le même problème :

Code : Tout sélectionner

Select Event
    Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
    Case #PB_Event_Gadget
      Select EventGadget()
      Case #Gadget_Lov_ETG
        Select EventType()
        Case #PB_EventType_LeftClick : State_Lov_ETG = GetGadgetState(#Gadget_Lov_ETG) : If State_Lov_ETG = 2 : Chemin_Lov_ETG_0$ = GetGadgetText(#Gadget_Lov_ETG) : SetGadgetText(#Gadget_Lov_ELG, Chemin_Lov_ETG_0$) : EndIf
        Case #PB_EventType_RightClick : ;menu a mettre 
        Case #PB_EventType_LeftDoubleClick : State_Lov_ETG = GetGadgetState(#Gadget_Lov_ETG) : If State_Lov_ETG = 1 : Chemin_Lov_ETG_0$ = GetGadgetText(#Gadget_Lov_ETG) : RunProgram(Chemin_Lov_ETG_0$) : EndIf
        EndSelect 
      Case #Gadget_Lov_ELG : Chemin_Lov_ELG_0$ = GetGadgetText(#Gadget_Lov_ELG) : SetGadgetText(#Gadget_Lov_ETG, Chemin_Lov_ELG_0$)
        Select EventType()
        Case #PB_EventType_LeftClick
        Case #PB_EventType_RightClick : ;menu a mettre 
        Case #PB_EventType_LeftDoubleClick : File_ELG$ = GetGadgetItemText(#Gadget_Lov_ELG, GetGadgetState(#Gadget_Lov_ELG), 0) : RunProgram(Chemin_Lov_ELG_0$ + File_ELG$) 
        EndSelect 
      EndSelect
    EndSelect