#NoEnv

#SingleInstance force
	
		gosub CreateGui
		gosub FillTV


		TVX("MyTree", "Handler", "HasRoot CollapseOnMove ", "aTooltip")		;!!!!!
	Gui, Show, h410 w430

return


Handler:
	if A_GuiEvent = S
		Tooltip % aTooltip%A_EventInfo%, 0, 0
return

;-------------------------------------------------------------------------------

Save:
	TVX_Walk(root, "SaveHandler", Event, Item)
return

SaveHandler:
	TV_GetText(txt, Item)
	if Event = +
	{
		FileDelete, _out.txt 
			FileAppend %txt%`n, _out.txt
		line := "|-"
	}

	if Event = E
		StringTrimRight, line, line, 2
	
		if Event in I,M
	{
		FileAppend %line%%txt%, _out.txt
			FileAppend % "    " aTooltip%item% "`n", _out.txt
	}

	if Event = M
		line .= "--"
	
	if Event = -
	  	Msgbox, TVX saved in _out.txt

return

;---------------------------------------------------------------------------------

OnButton:
    ControlSend, SysTreeView321, {SHIFT down}
		ControlSend, SysTreeView321, {%A_GuiControl%}
		sleep 50	
     ControlSend, SysTreeView321, {SHIFT up}

;	h := TVX_Move(TV_GetSelection(), A_GuiControl="Up" ? "u" : "d")
;   TV_Modify(h, "Select")
return

Modify:

	if A_GuiControl=Delete
	    ControlSend, SysTreeView321, {DELETE}

		if A_GuiControl=Insert
	    ControlSend, SysTreeView321, {INSERT}

		if A_GuiControl=Insert Submenu
	{
	    ControlSend, SysTreeView321, {SHIFT down}
	     ControlSend, SysTreeView321, {INSERT}
		Sleep 50
	     ControlSend, SysTreeView321, {SHIFT up}
	}
return

;---------------------------------------------------------------------------------

FillTV:
	root  := TV_Add("Root", "" , "Expand")
	TV_Modify( root, "", A_Index "    " root)
	loop, 10 {
			P     := TV_Add("", root)
		TV_Modify( P, "", A_Index "    " P)
		aTooltip%P% := "My Tooltip " A_Index
	}

	
	P2  := TV_Add("", P),		aTooltip%P2% := "My Tooltip 2.1"
	TV_Modify( P2, "", "2.1    " P2)

	P2   := TV_Add("", P), 		aTooltip%P2% := "My Tooltip 2.2"
	TV_Modify( P2, "", "2.2    " P2)
	
	P3   := TV_Add("", P2),		aTooltip%P3% := "My Tooltip 2.2.1"
	TV_Modify( P3, "", "2.2.1    " P3)
	
	P3   := TV_Add("", P2),		aTooltip%P3% := "My Tooltip 2.2.2"
	TV_Modify( P3, "", "2.2.2   " P3)
	
	P3   := TV_Add("", P2),		aTooltip%P3% := "My Tooltip 2.2.3"
	TV_Modify( P3, "", "2.2.3    " P3)
return

;---------------------------------------------------------------------------------

CreateGui:
	Gui, Add, TreeView, h400 w300 vMyTree
		Gui, Add, Button, w100 gOnButton x+10 , Up
		Gui, Add, Button, wp gOnButton,Down

		Gui, Add, Button, y+20 wp gModify, Insert
		Gui, Add, Button, wp gModify, Insert Submenu

		Gui, Add, Button, y+20 wp gModify, Delete

		Gui, Add, Edit, y+50 wp vMyEdit gEdit, 
		Gui, Add, Text, yp-30 wp, Change tooltip for selection

		Gui, Add, Button, y+150 w100 gSave, Save to file

return

;---------------------------------------------------------------------------------

Edit:
	 Gui, Submit, Nohide
	  c := TV_GetSelection()
	 aTooltip%c% := MyEdit
return

GuiClose:
GuiEscape:
	 ExitApp

return

; #include TVX.ahk