-la premiere permettant de copier dans le clip board le texte sélectionné dans la liste
-la deuxième permettant de lancer une fonction
Ce menu doit apparaître lors d'un click droit de souris sur une ligne de la liste
J'aimerais bien un menu identique au fichier .jpg joinds !
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
#include <GuiListBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $ReadDSLog = "c:\dslog.txt", $line
;GUI de debug
$DebugGUI = GUICreate("IcarDS Skinner Tool ", 500, 603, -1,-1)
$ReturnToMainGUI = GUICtrlCreateButton("Commands", 5, 5, 100, 25, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
GUICtrlSetTip(-1,"Return to Main Window")
GUICtrlSetState($ReturnToMainGUI,$GUI_ENABLE)
$LiveDebugLogDebug = GUICtrlCreateButton("Live Debug Log", 105, 5, 100, 25, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
GUICtrlSetState($LiveDebugLogDebug,$GUI_DISABLE)
$DSFileDebug = GUICtrlCreateButton("DS Files", 215, 5, 80, 25, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
$OptionsDebug = GUICtrlCreateButton("Profiles", 305, 5, 80, 25, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
$AboutDebug = GUICtrlCreateButton("?", 390, 5, 25, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$onTopDebug = GUICtrlCreateCheckbox("On Top?", 420, 10, 120, 20)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlCreateLabel("To copy a line to the clipboard: Select Line > Right Click > To Clipboard",20,40,350,20)
$SeparateWindow = GUICtrlCreateButton("Separate Window", 380, 35, 100, 25, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
GUICtrlSetTip(-1,"Separate Main Window and Debug Window")
$DebugWindow = GUICtrlCreateList("", 8, 60, 482, 450, BitOR($WS_VSCROLL, $WS_BORDER))
$pauseLabel = GUICtrlCreateLabel("*** Log is running ***",190,510,200,20)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$CleanAutoLog = GUICtrlCreateCheckbox("Clean Auto", 5, 505, 120, 20)
GUICtrlSetTip(-1,"Clean Log File on Start")
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$ClearDebugWindow = GUICtrlCreateButton("Clear", 10, 535, 60, 30, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
GUICtrlSetTip(-1,"Clear the Log")
$PauseDebugWindow = GUICtrlCreateButton("Pause Debugger", 90, 535, 320, 30, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
GUICtrlSetTip(-1,"Pause/Launch Log")
$Cancel = GUICtrlCreateButton("Exit", 430, 535, 60, 30, $WS_GROUP, BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))
GUICtrlSetTip(-1,"Exit")
$DebugGUIStatus = True
$SeparateGUIStatus = False
$pauseDebug = False
GUISetState()
$ClipPutGUI = GUICreate("",200,50,-1,-1,$WS_POPUPWINDOW)
GUISetState(@SW_HIDE,$ClipPutGUI)
$ClipPutGUIStatus = False
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE,$Cancel
Exit
Case $PauseDebugWindow
If $pauseDebug = False Then
$pauseDebug = True
GUICtrlSetData($pauseLabel,"*** Pause ***")
Else
$pauseDebug = False
GUICtrlSetData($pauseLabel,"*** Log is running ***")
EndIf
EndSwitch
;lecture du fichier dslog.txt dans la list avec mise à jour (par GaryDeLaMer)
If $DebugGUIStatus = True and $pauseDebug = False and FileExists($ReadDSLog) Then
Local $countLigne = _FileCountLines($ReadDSLog)
Local $countListe = _GUICtrlListBox_GetCount($DebugGUI)
; Je compare le Nombre de ligne si j'en ai plus je les affiche
If $countLigne > $countListe Then
_GUICtrlListBox_BeginUpdate($DebugWindow)
; je calcule la poisition dans le fichier de la nouvelle ligne
Local $CountNewline = $countLigne - $countListe
; j'ouvre le fichier et je lis la 1ere nouvelle ligne
; donc je me positionne dans le fichier sur la 1ère nouvelle ligne
; Important pour la suite car je vais lire séquentiellemeent a partir de la.
Local $hfile = FileOpen($ReadDSLog, 0)
Local $line = FileReadLine($hfile, $countLigne - $CountNewline)
; j'ajoute la ligne dans la listbox
Local $iIndex = _GUICtrlListBox_AddString($DebugWindow, $line)
; maintenant je vais lire jusqu'a la fin du fichier et ajouté les ligne dans la liste
While 1
$line = FileReadLine($hfile)
If @error = -1 Then ExitLoop
$iIndex = _GUICtrlListBox_AddString($DebugWindow, $line)
Wend
; Ici je scrolle la listebox sur le dernier index créer
; Même si la 1ere ligne est la seule ajouter avant le while puisque $iIndex est créer
_GUICtrlListBox_SetCurSel($DebugWindow, $iIndex)
FileClose($hfile)
_GUICtrlListBox_EndUpdate($DebugWindow)
EndIf
EndIf
Wend
DsLogUpdate()
Func DsLogUpdate()
; If FileExists($ReadDSLog) Then ClearDebugFile();vide le fichier log à chaque démarrage
$file = FileOpen($ReadDSLog, 0)
While 1
$line &= FileReadLine($file) & '|'
If @error = -1 Then ExitLoop
WEnd
FileClose($file)
return $line
EndFunc


