_cycle_machine.tcl 768 B

12345678910111213141516171819202122232425262728293031
  1. namespace eval cycle_machine {
  2. set help_cycle_machine \
  3. {Cycle through the currently running machines.
  4. 'cycle_back_machine' does the same as 'cycle_machine', but it goes in the
  5. opposite direction.
  6. }
  7. set_help_text cycle_machine $help_cycle_machine
  8. set_help_text cycle_back_machine $help_cycle_machine
  9. proc cycle_machine {{step 1}} {
  10. set cycle_list [utils::get_ordered_machine_list]
  11. if {[llength $cycle_list] > 0} {
  12. set cur [lsearch -exact $cycle_list [activate_machine]]
  13. set new [expr {($cur + $step) % [llength $cycle_list]}]
  14. activate_machine [lindex $cycle_list $new]
  15. }
  16. }
  17. proc cycle_back_machine {} {
  18. cycle_machine -1
  19. }
  20. namespace export cycle_machine
  21. namespace export cycle_back_machine
  22. } ;# namespace cycle_machine
  23. namespace import cycle_machine::*