;; Simple Ini file Editor
;; Usage /ini <path to ini file>
;; Allows adding/deletition/modifing of items only (not sections!)
dialog ini {
title "Simple INI Editor ©2008 Christopher 'Sephiroth' R."
size -1 -1 300 255
option dbu
list 1, 5 25 65 225, sort size
list 2, 80 15 55 210, size hsbar
list 3, 135 15 155 210, size hsbar
button "&Open", 20, 5 5 65 12
text "",19, 5 17 50 8
box "Settings", 4, 75 5 220 245
button "&Edit", 5, 140 230 40 12
button "&Delete", 6, 190 230 40 12
button "&Add", 7, 92 230 40 12
button "&Save", 8, 235 230 40 12, save
button "cancel", 50,0 0 0 0,hide cancel
text "temp",9, 0 0 0 0,hide
text "temp",10, 0 0 0 0,hide
text "temp",11, 0 0 0 0,hide
}
alias ini {
if (!$dialog(ini)) { dialog -m ini ini }
var %ini = $iif($1-,$1-,$mircini)
did -r ini 1,2,3,9,10
did -a ini 10 %ini
var %x = $ini(%ini,0)
var %i = 0
while (%i < %x) {
inc %i
did -a ini 1 $ini(%ini,%i)
}
did -z ini 1
did -ra ini 19 $nopath($longfn(%ini))
did -ra ini 11 $nofile(%ini)
}
on *:dialog:ini:sclick:20:{
var %section = $did(1).seltext
var %line = $did(2).sel
if (%line) && (%section) {
if ($input(Save current changes to File $qt($trim($did(10),20) $+ $iif($trim($did(10),40) != $did(10),$nopath($did(10)))) into $chr(91) $+ %section $+ $chr(93) $+ ?,adyqu,Confirm)) {
var %section = $did(1).seltext
!.remini $qt($did(10)) %section
var %x = $did(2).lines
var %i = 0
while (%i < %x) {
inc %i
!.writeini -n $qt($did(10)) %section $did(2,%i) $did(3,%i)
}
}
}
var %lastpath = $iif($isdir($did(11)),$did(11),$mircdir)
ini $$sfile(%lastpath $+ *.ini,Please select ini File,Load...).shortfn
}
on *:dialog:ini:sclick:7:{
var %section = $did(1).seltext
if (%section) {
var %name = $remove($$input(Insert Itemname: $crlf $crlf (Note: $chr(91) $chr(93) and space will be removed from Itemname.),adoeiu,Item),$asc(91),$asc(93),$chr(32))
var %item = $$input(Insert Value for Item $trim(%name,20) $+ :,adoeiu,Value)
if ($input(Item: $trim(%name,20) $+ $crlf $+ Value: $trim(%item,20),adyiu,Add?)) {
if ($didwm($dname,2,%name,1)) {
var %found = $v1
if (!$input(Item $trim(%name,20) already exists $+ $chr(44) if you click yes you will overwrite it!,adwyu,Overwrite?)) { return }
}
if (%found) did -d ini 2,3 %found
did -a ini 2 %name
did -a ini 3 %item
}
}
}
alias -l trim {
return $left($1,$2) $+ $iif($len($1) > $2,...)
}
on *:dialog:ini:sclick:5:{
var %section = $did(1).seltext
if (%section) {
var %line = $did(2).sel
if (%line) {
var %name = $did(2).seltext
var %item = $did(3).seltext
var %newitem = $$input(New Value for $trim(%name,20) $+ :,adoeiu,Value,%item)
if ($input(Are you sure to change $trim(%name,20) Value: $crlf $+ Oldvalue: $trim(%item,20) $crlf $+ Newvalue: $trim(%newitem,20),adyiu,Edit?)) {
did -d ini 3 %line
did -i ini 3 %line %newitem
did -c ini 3 %line
}
}
}
}
on *:dialog:ini:dclick:2,3:{
var %section = $did(1).seltext
if (%section) {
var %line = $did(2).sel
if (%line) {
var %name = $did(2).seltext
var %item = $did(3).seltext
var %newitem = $$input(New Value for $trim(%name,20) $+ :,adoeiu,Value,%item)
if ($input(Are you sure to change $trim(%name,20) Value: $crlf $+ Oldvalue: $trim(%item,20) $crlf $+ Newvalue: $trim(%newitem,20),adyiu,Edit?)) {
did -d ini 3 %line
did -i ini 3 %line %newitem
did -c ini 3 %line
}
}
}
}
on *:dialog:ini:sclick:6:{
var %section = $did(1).seltext
var %line = $did(2).sel
if (%line) && (%section) {
var %name = $did(2,%line)
var %item = $did(3,%line)
if ($input(Are you sure to remove this: $crlf $crlf $+ Item: $trim(%name,20) $crlf $+ Value: $trim(%item,30),adywu,Remove?)) {
did -d ini 2,3 %line
}
if ($did(2,%line)) { did -c ini 2,3 %line }
else { did -c ini 2,3 $did(2).lines }
}
}
on *:dialog:ini:sclick:50:{
var %section = $did(1).seltext
var %line = $did(2).sel
if (%line) && (%section) {
if ($input(Save current changes to File $qt($trim($did(10),20) $+ $iif($trim($did(10),40) != $did(10),$nopath($did(10)))) into $chr(91) $+ %section $+ $chr(93) $+ ?,adyqu,Confirm)) {
var %section = $did(1).seltext
!.remini $qt($did(10)) %section
var %x = $did(2).lines
var %i = 0
while (%i < %x) {
inc %i
!.writeini -n $qt($did(10)) %section $did(2,%i) $did(3,%i)
}
}
}
}
on *:dialog:ini:sclick:8:{
var %section = $did(1).seltext
!.remini $qt($did(10)) %section
var %x = $did(2).lines
var %i = 0
while (%i < %x) {
inc %i
!.writeini -n $qt($did(10)) %section $did(2,%i) $did(3,%i)
}
}
on *:dialog:ini:sclick:1:{
var %inisec = $did($did).seltext
var %ini = $did(10)
if ($did(9) != %inisec) {
did -r $dname 2,3
if (%inisec) {
hmake initemp 1000
hload -i initemp $qt(%ini) %inisec
var %x = $hget(initemp,0).item
var %i = 0
while (%i < %x) {
inc %i
var %name = $hget(initemp,%i).item
var %read = $hget(initemp,%i).data
did -a $dname 2 %name
did -a $dname 3 %read
}
did -z $dname 2,3
did -ra $dname 9 %inisec
did -c $dname 2,3 1
hfree initemp
}
}
}
on *:dialog:ini:sclick:2,3:{
var %o = $iif($did == 2,3,2)
did -c $dname %o $did($did).sel
}