#include <GUIConstants.au3>
#include <GuiListBox.au3>
#include <Misc.au3>
#include <File.au3>

$ini = @MyDocumentsDir & "\_ClipSelector.ini"	
While 1
	If _IsPressed("11") And _IsPressed("12") And _IsPressed("43") Then
		Send("^c")
	ElseIf _IsPressed("11") And _IsPressed("43") Then
		_ClipSelector()
	EndIf
WEnd

Func _ClipSelector()
	$count = IniReadSection($ini, "clips")
	If IsArray($count) Then
		If IniRead($ini, "clips", $count[0][0], "") <> ClipGet() Then IniWrite($ini, "clips", $count[0][0]+1, StringRegExpReplace(ClipGet(), @CRLF, "<br>"))
	Else
		If IniRead($ini, "clips", 1, "") <> ClipGet() Then IniWrite($ini, "clips", 1, StringRegExpReplace(ClipGet(), @CRLF, "<br>"))
	EndIf
	GUICreate("ClipSelector", 340, 190, @DesktopWidth-340, 0, $WS_POPUPWINDOW)
	GUISetFont(11, 400, 1, "Century Gothic")
	$list = GUICtrlCreateList("", -3, -3, 346, 220, $LBS_EXTENDEDSEL)
	GUISetState()
	
    _GUICtrlListBox_BeginUpdate($list)
	$count = IniReadSection($ini, "clips")
	For $i = $count[0][0] To 1 Step -1
		_GUICtrlListBox_AddString($list, IniRead($ini, "clips", $i, ""))
	Next
    _GUICtrlListBox_EndUpdate($list)
    _GUICtrlListBox_SetSel($list, 0)
	
	WinSetOnTop("ClipSelector", "", 1)
	WinActivate("ClipSelector")
	
	While 1
		$msg = GUIGetMsg()
		If $msg = $GUI_EVENT_CLOSE Then
			GUIDelete()
			ExitLoop
		ElseIf _IsPressed("0D") And WinGetTitle("") = "ClipSelector" Then
			$sel = _GUICtrlListBox_GetSelItemsText($list)
			ClipPut(StringRegExpReplace($sel[1], "<br>", @CRLF))
			GUIDelete()
			ExitLoop
		EndIf
	WEnd
EndFunc