

proc onv3AnsysVarsDEZLoad {} {
   global ansys_vars

   aie_update_ansys_vars setup
   aie_update_ansys_vars current

   update idletasks
}

proc onV3AnsysVarsMdModify {args} {
   set md [lindex $args 1]
   set j [lsearch $::ansys_vars(sv_modes) $md]
   if {$j >= 0} {
      set ::ansys_vars(mode_s) \
             [lindex $::ansys_vars(sv_modes) [expr $j + 1]]

      aie_update_ansys_vars mode
   }
}

proc onV3AnsysVarsLdModify {args} {
   set ld [lindex $args 1]
   set j [lsearch $::ansys_vars(sv_loads) $ld]
   if {$j >= 0} {
      set ::ansys_vars(load_s) \
             [lindex $::ansys_vars(sv_loads) [expr $j + 1]]

      aie_update_ansys_vars load
   }
}

proc aie_update_ansys_vars {what args} {
   global ansys_vars

   switch -- $what {
      setup {
         if ![info exist ansys_vars(setupped)] {
            set ansys_vars(sv_modes) [V3_variables_get ansys_modes s]
            if {$ansys_vars(sv_modes) == ""} {
               ::AIEnv::GUIManagement::ToggleGrey v3AnsysVarsMd 1
            } else {
               ::AIEnv::GUIManagement::ToggleGrey v3AnsysVarsMd 0
            }
            set ansys_vars(vv_modes) [V3_variables_get ansys_modes v]

            set rr ""
            foreach {t v} $ansys_vars(sv_modes) { lappend rr $t }
            set ansys_vars(svModes) $rr

            set ansys_vars(sv_loads) [V3_variables_get ansys_loads s]
            if {$ansys_vars(sv_loads) == ""} {
               ::AIEnv::GUIManagement::ToggleGrey v3AnsysVarsLd 1
            } else {
               ::AIEnv::GUIManagement::ToggleGrey v3AnsysVarsLd 0
            }
            set ansys_vars(vv_loads) [V3_variables_get ansys_loads v]

            set rr ""
            foreach {t v} $ansys_vars(sv_loads) { lappend rr $t }
            set ansys_vars(svLoads) $rr

            foreach c {s v} {
               set sides [V3_variables_get ansys_sides $c]
               if {[V3_variables_get ansys_onesided $c] != ""} {
                  set sides [linsert $sides 0 Displacement onesided]
               }
               set ansys_vars(${c}v_classes) $sides
            }

            global v3p_mode_title
            if {[info exist v3p_mode_title] && ($v3p_mode_title != "")} {
               if ![catch {set pp [v3AnsysVarsDEZ path v3AnsysVarsMd]}] {
                  set pp [lindex $pp 0]
                  if {[winfo exist $pp] && ([winfo class $pp] == "Label")} {
                     $pp configure -text $v3p_mode_title
                  }
               } 
            }

            set ansys_vars(setupped) 1
         }
      }
      current {
         aie_update_ansys_vars setup

         if {$ansys_vars(sv_modes) != ""} {
            set ansys_vars(mode_s) [V3_variables_get ansys_current mode_s]
            set ansys_vars(mode_v) [V3_variables_get ansys_current mode_v]

            set j [lsearch $ansys_vars(sv_modes) $ansys_vars(mode_s)]
            if {$j > 0} {
               set ansys_vars(modeS) \
                       [lindex $ansys_vars(sv_modes) [expr $j - 1]]
            }
         } else {
            set ansys_vars(modeS) ""
         }
         if {$ansys_vars(sv_loads) != ""} {
            set ansys_vars(load_s) [V3_variables_get ansys_current load_s]
            set ansys_vars(load_v) [V3_variables_get ansys_current load_v]

            set j [lsearch $ansys_vars(sv_loads) $ansys_vars(load_s)]
            if {$j > 0} {
               set ansys_vars(loadS) \
                       [lindex $ansys_vars(sv_loads) [expr $j - 1]]
            }
         } else {
            set ansys_vars(loadS) ""
         }

         set ansys_vars(side_s) [V3_variables_get ansys_current side_s]
         set K onesided
         switch -- $ansys_vars(side_s) {
            Z1 { set K Tsided }
            Z2 { set K Bsided }
            S  { set K Ssided }
            E  { set K Esided }
         }
         set ansys_vars(side_K) $K

         set ansys_vars(sv_bname) [V3_variables_get ansys_current sv_bname]
         set svlist [V3_variables_get ansys_$K s]
         v3AnsysVarsDEZ set v3pAnsysSVarList $svlist
         v3AnsysVarsDEZ set v3pAnsysSVarCur $ansys_vars(sv_bname)

         set ansys_vars(sv_min) [V3_variables_get ansys_current sv_min]
         set ansys_vars(sv_max) [V3_variables_get ansys_current sv_max]

         set vvlist [V3_variables_get ansys_$K v]
         v3AnsysVarsDEZ set v3pAnsysVVarList $vvlist
         if {$vvlist != ""} {
            set ansys_vars(side_v) [V3_variables_get ansys_current side_v]
            set ansys_vars(vv_bname) [V3_variables_get ansys_current vv_bname]
            v3AnsysVarsDEZ set v3pAnsysVVarCur  $ansys_vars(vv_bname)
            ::AIEnv::GUIManagement::ToggleGrey v3AnsysVVarFm 0
         } else {
             v3AnsysVarsDEZ set v3pAnsysVVarCur ""
            ::AIEnv::GUIManagement::ToggleGrey v3AnsysVVarFm 1
         }

         set ansys_vars(vmax) [V3_variables_get ansys_current vmax]
      }
      load {
         V3_ansys_variable select_load v $ansys_vars(load_s)
         V3_ansys_variable select_load s $ansys_vars(load_s)

         aie_update_ansys_vars current
      }
      mode {
         V3_ansys_variable select_mode v $ansys_vars(mode_s)
         V3_ansys_variable select_mode s $ansys_vars(mode_s)

         aie_update_ansys_vars current
      }
      side {
         set K onesided
         switch -- $ansys_vars(side_s) {
            Z1 { set K Tsided }
            Z2 { set K Bsided }
            S  { set K Ssided }
            E  { set K Esided }
         }
         set ansys_vars(side_K) $K

         set sslist [V3_variables_get ansys_$K s]
         set js [lsearch $sslist $ansys_vars(sv_bname)]
         
         v3AnsysVarsDEZ set v3pAnsysSVarList $sslist

         set vvlist [V3_variables_get ansys_$K v]
         if {$vvlist != ""} {
            v3AnsysVarsDEZ set v3pAnsysVVarList $vvlist
            V3_ansys_variable select_side v $ansys_vars(side_s)
            ::AIEnv::GUIManagement::ToggleGrey v3AnsysVVarFm 0
         } else {
            ::AIEnv::GUIManagement::ToggleGrey v3AnsysVVarFm 1
         } 
         V3_ansys_variable select_side s $ansys_vars(side_s)

         aie_update_ansys_vars current
      }
   }
}

proc onV3AnsysSVarModify {args} {
   global ansys_vars
   set K $ansys_vars(side_K)
 
   V3_ansys_variable select_$K s \
             [v3AnsysVarsDEZ get v3pAnsysSVarCur] [lindex $args 1]
   update idletasks

   set ansys_vars(sv_min) [V3_variables_get ansys_current sv_min]
   set ansys_vars(sv_max) [V3_variables_get ansys_current sv_max]
}

proc onV3AnsysVVarModify {args} {
   global ansys_vars
   set K $ansys_vars(side_K)

   V3_ansys_variable select_$K v  \
                 [v3AnsysVarsDEZ get v3pAnsysVVarCur] [lindex $args 1]

   set ansys_vars(vmax) [V3_variables_get ansys_current vmax]
}
