; mod_sys sys_id
;
; permits to interactively modify a spin system
; and the associated spins
;
; if called as : mod_sys sys_id name index,   will do the modification
message "Modify System :"
set ss = $_

if (!$arg) then		; start here if no more arg == do form
set ll_res = $sys[$ss]
set num = (head($ll_res))
set aa = (head(tail($ll_res)))
set ll_res = (tail(tail($ll_res)))

; build dialog
set tmp = ('tmp' // int(1000000*$random))
open $tmp
fprint $tmp "formbox \"
fprint $tmp ("'Modif System";$ss;"' \")
fprint $tmp ('mod_sys'; $ss; '$aa $num \')		; call back is modify aa & num
fprint $tmp ("'spin-system type' enum $residue systype"; $aa; " \")
fprint $tmp (' "Primary number :" string num'; $num; '   separator \')
fprint $tmp "'list of spins :' message \ "

; build list of spins
set p = (head($ll_res))  set ll = (tail($ll_res))
while ($p s! " ")
; for each spin : id : name-ppm; 'show' 'modify' 'remove from spin-sys'
  set ppm = (head($spin[$p]))
  set name = (head(tail($spin[$p])))
  fprint $tmp ('"' // $p // ' : ' // $name; $ppm; 'ppm" message noreturn \")
  fprint $tmp ('show action "show_sys'; $p; '" noreturn \')
  fprint $tmp ('modify action "mod_sys'; $p; '" noreturn \')
  fprint $tmp ('remove action "rem_spin_sys'; $ss; $p; 'closewidget $widget mod_sys $ss" \')
  set p = (head($ll_res))  set ll = (tail($ll_res))
endwhile

; now list of buttons
fprint $tmp 'separator \'
fprint $tmp ('show action "show_sys'; $ss; '" noreturn \')
fprint $tmp ('delete action "unset sys[' // '"' // $ss // '"] " *')
close $tmp

; call it
@($tmp)

sh ("/bin/rm -f"; $tmp)

else	; !$arg
; parse return : sys_type, num_ass
set systype = $_
set num = $_
set ll_res = (tail(tail($sys[$ss])))

; change in spin db
set sys[$ss] = ($systype; $num; $ll_res)

endif
