I've rewritten the script to use an INI file, and hopefully be more readable as well.
Code:
#SingleInstance force
#NoEnv
SetBatchLines -1
f = NumberMatch.ini
IfNotExist, %f%
{ ;Sample data
IniWrite, 1 , %f%, Count, ID#
IniWrite, |1|, %f%, Count, list
IniWrite, John Doe , %f%, 1, Name
IniWrite, jd@email.com , %f%, 1, eMail
IniWrite, www.johndoe.com , %f%, 1, URL
IniWrite, aqua , %f%, 1, Color
}
;Gui 1
Gui, Add, ListView, grid r15 w325 -Multi gLV, ID#|Name|eMail|URL|Color
Gui, Add, Button, w75 xm Default, Add
Gui, Add, Button, wp x+50, Delete
Gui, Add, Button, wp x+50, Edit
;Gui 2
colors = aqua|black|blue|fuchsia|gray|green|lime|maroon
|navy|olive|purple|red|silver|teal|white|yellow
Gui, 2:+Owner1
Gui, 2:Add, Text, w40, Name:
Gui, 2:Add, Text, wp , eMail:
Gui, 2:Add, Text, wp , URL:
Gui, 2:Add, Text, wp , Color:
Gui, 2:Add, Edit, ym w220 vName
Gui, 2:Add, Edit, wp vEmail
Gui, 2:Add, Edit, wp vURL
Gui, 2:Add, ComboBox, wp vColor, %colors%
Gui, 2:Add, Button, xm+50 w75 Default, OK
Gui, 2:Add, Button, x+20 wp, Cancel
;FillLV
IniRead, list, %f%, Count, list
Loop, Parse, list, |
{
If !A_LoopField
continue
IniRead, name , %f%, %A_LoopField%, Name
IniRead, email, %f%, %A_LoopField%, eMail
IniRead, url , %f%, %A_LoopField%, URL
IniRead, color, %f%, %A_LoopField%, Color
LV_Add("",A_LoopField,Name,eMail,URL,Color)
}
LV_ModifyCol(1,0)
Loop,4
LV_ModifyCol(A_Index+1,"AutoHdr")
;
Gui, Show,,Number Match
return ;<--End of auto-execute section
GuiClose:
ExitApp
;
LV:
If A_GuiEvent != DoubleClick
return
ButtonEdit:
RowNumber := LV_GetNext()
If !RowNumber
return
LV_GetText(ID ,RowNumber,1)
LV_GetText(name ,RowNumber,2)
LV_GetText(email,RowNumber,3)
LV_GetText(url ,RowNumber,4)
LV_GetText(color,RowNumber,5)
Gui, +Disabled
Gui, 2:Default
GuiControl, , Name , %Name%
GuiControl, , Email, %eMail%
GuiControl, , URL , %URL%
GuiControl, Text, Color, %Color%
Gui, Show,,Edit
return
;
ButtonAdd:
Gui, +Disabled
Gui, 2:Default
GuiControl,,Name
GuiControl,,Email
GuiControl,,URL
GuiControl, Text, Color
Gui, Show,,Add
return
;
2ButtonOK:
WinGetActiveTitle, title
Gui, Submit, NoHide
If !Name
return
Gui, 1:Default
If (title = "add") {
IniRead, ID, %f%, Count, ID#
IniWrite,% ++ID, %f%, Count, ID#
IniRead, list, %f%, Count, list
IniWrite,% list ID "|", %f%, Count, list
LV_Add("",ID,Name,eMail,URL,Color)
}
Else LV_Modify(RowNumber,"",ID,Name,eMail,URL,Color)
IniWrite, %Name% , %f%, %ID%, Name
IniWrite, %eMail% , %f%, %ID%, eMail
IniWrite, %URL% , %f%, %ID%, URL
IniWrite, %Color% , %f%, %ID%, Color
2GuiClose:
2ButtonCancel:
Gui, 1:-Disabled
Gui, 2:Cancel
return
;
ButtonDelete:
RowNumber := LV_GetNext()
If !RowNumber
return
Gui, +OwnDialogs
Msgbox,4, Delete, Are you sure to delete this row?
IfMsgBox, No
return
LV_GetText(ID,RowNumber)
IniRead, list, %f%, Count, list
StringReplace, list, list, |%ID%|, |
IniWrite, %list%, %f%, Count, list
IniDelete, %f%, %ID%
LV_Delete(RowNumber)
return