Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4.50
;
; Explication du programme :
; Mémoriser le contenu du presse papier
#Element_NombreMaxi = 10
Enumeration ; On énumère les fenêtres
	#Fenetre
EndEnumeration
Enumeration ; On énumère les gadgets
	#Liste
	#Copier
EndEnumeration
; Création de la fenêtre et de la GadgetList
If OpenWindow(#Fenetre, 0, 0, 300, 300, "Presse-Papier", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
  End
EndIf
AddWindowTimer(#Fenetre, 1, 50) ; On ajoute un timer qui déclenche toute les 50ms
ListViewGadget(#Liste, 0, 0, 300, 270)
ButtonGadget(#Copier, 0, 270, 300, 30, "Copier")
Repeat
  Event = WaitWindowEvent()
  
  Select Event
		Case #PB_Event_Timer
      Select EventTimer() ; Timer
				Case 1
					Texte.s = GetClipboardText()
					If Texte <> ""
						; On regarde si le texte existe déjà
						NombreElement = CountGadgetItems(#Liste)
						TexteExistant = 0
						For i = 0 To NombreElement - 1
							If GetGadgetItemText(#Liste, i) = Texte
								TexteExistant = 1
							EndIf
						Next
						; Si il n'existe pas, on l'ajoute
						If TexteExistant = 0
							If NombreElement = #Element_NombreMaxi
								; On retire le dernier élément
								RemoveGadgetItem(#Liste, NombreElement - 1)
							EndIf
							; On ajoute au début, donc position 0
							AddGadgetItem(#Liste, 0, Texte)
						EndIf
						
					EndIf
			EndSelect
      
		Case #PB_Event_Gadget
      Select EventGadget() ; Gadgets
				Case #Copier
					Selection = GetGadgetState(#Liste)
					If Selection >= 0 ; Si on a sélectionné qlq chose
						SetClipboardText(GetGadgetItemText(#Liste, Selection))
					EndIf
			EndSelect
	EndSelect
  
Until Event = #PB_Event_CloseWindow