Sephiroth
http://sephiroth.scifi-action.de/board/

Simple Ini Editor
http://sephiroth.scifi-action.de/board/viewtopic.php?f=4&t=80
Seite 1 von 1

Autor:  Sephiroth [ 12. Juli 2008 16:29 ]
Betreff des Beitrags:  Simple Ini Editor

;; 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
}

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/