home *** CD-ROM | disk | FTP | other *** search
/ Dream 44 / Amiga_Dream_44.iso / Amiga / pov / utils / shelly16.lha / shelly / sh.tcl next >
Text File  |  1994-06-09  |  5KB  |  148 lines

  1. # Tcl/Tk-GUI for Shelly1.5
  2. # start with "wish -file sh.tcl"
  3.  
  4.  
  5. # some procedures ...
  6. proc loadfile2 {file} { set fileid [open "$file" r]
  7.                    .mytext delete 0.0 end
  8.            .esave delete 0 end
  9.                    .esave insert 0 "$file"
  10.                    .eload insert 0 "$file"
  11.                    while {[gets $fileid line] >= 0} {
  12.                     .mytext insert current $line
  13.                     .mytext insert current "\n"
  14.                    }    
  15.            close $fileid
  16.                  }
  17.                  
  18. proc browse {file} { if [file isfile $file] { loadfile2 $file 
  19.                                               destroy .newwin}
  20.                    }
  21.  
  22.       
  23. proc browsegui {} { toplevel .newwin
  24.                     wm title .newwin "Load"
  25.                     scrollbar .newwin.broscroll -command ".newwin.brolist yview"
  26.                     listbox .newwin.brolist -relief raised -yscrollcommand ".newwin.broscroll set"
  27.                     pack  .newwin.broscroll -side right -fill y
  28.                     pack  .newwin.brolist -fill none
  29.                     set dir .
  30.                     bind .newwin.brolist <Double-Button-1> {foreach i [selection get] {browse $i}}
  31.                     focus .newwin.brolist
  32.                     .newwin.brolist delete 0 end
  33.                     foreach i [exec ls -a .] { if {$i != "." } { if {$i != ".." } {
  34.                                 .newwin.brolist insert end $i} }}                    
  35.                     
  36.                     
  37.                    }    
  38.                    
  39.   
  40.  
  41. proc loadfile {} { set myerror [catch {set fileid [open [.eload get] r]}]
  42.                    if {$myerror != 0} {set fileid [open [.eload get].shy r]
  43.                                        .eload insert end ".shy"}
  44.                    .mytext delete 0.0 end
  45.            .esave delete 0 end
  46.                    .esave insert 0 [.eload get]
  47.                    while {[gets $fileid line] >= 0} {
  48.                     .mytext insert current $line
  49.                     .mytext insert current "\n"
  50.                    }    
  51.            close $fileid
  52.                  }
  53.  
  54. proc savefile {} { set fileid [open [.esave get] w]
  55.                    puts $fileid [.mytext get 0.0 end]    
  56.            close $fileid
  57.                  }
  58.                  
  59.                  
  60.                  
  61. proc neuload {} { if {[.eload get] == ""} {browsegui} else {loadfile}}
  62.  
  63.                  
  64. proc calcshell {} { set fileid [open /tmp/[.esave get].tmp w]
  65.                     puts $fileid [.mytext get 0.0 end] 
  66.                     close $fileid
  67.                     exec shelly /tmp/[.esave get].tmp [.eShout get] &
  68.                   }
  69. proc calcrender {} { set fileid [open /tmp/[.esave get].tmp w]
  70.                      puts $fileid [.mytext get 0.0 end]
  71.                      puts $fileid "POV\nRENDER\n"
  72.                      puts $fileid "camx:[.ecamx get]\n"
  73.                      puts $fileid "camy:[.ecamy get]\n"
  74.                      puts $fileid "camz:[.ecamz get]\n"
  75.                      close $fileid
  76.                      exec shelly /tmp/[.esave get].tmp [.eShout get] &
  77.                    }
  78.  
  79. proc calcdispl {} { set fileid [open /tmp/[.esave get].tmp w]
  80.                      puts $fileid [.mytext get 0.0 end]
  81.                      puts $fileid "X3D\n"
  82.                      close $fileid
  83.                      exec shelly /tmp/[.esave get].tmp [.eShout get]
  84.                      exec x3d [.eShout get] &
  85.                    }
  86. proc reinit {} { .mytext delete 0.0 end
  87.                  .esave delete 0 end
  88.                  .eload delete 0 end
  89.                }
  90.  
  91.  
  92. # create hierachical geometry
  93. frame .buttons
  94. frame .uhalf
  95. frame .text
  96. frame .rhalf
  97. frame .labels
  98. frame .entries
  99. pack .buttons -in . -side bottom
  100. pack .uhalf -in . -side top
  101. pack .text -in .uhalf -side left -padx 3m -pady 3m
  102. pack .rhalf -in .uhalf -side right
  103. pack .labels -in .rhalf -side left
  104. pack .entries -in .rhalf -side right
  105.  
  106.  
  107. # create Text-widget
  108. text .mytext -yscrollcommand ".scroll set" -relief sunken -borderwidth 2 -width 50
  109. scrollbar .scroll -relief flat -command ".mytext yview"
  110. pack .scroll -in .text -side right -fill y 
  111. pack .mytext -in .text -fill none 
  112. .mytext insert current "Welcome to the Tcl/Tk-GUI for Shelly1.5"
  113.  
  114. # create Labels & Entries
  115. label .lload -text "Load:"
  116. label .lsave -text "Save:"
  117. label .lShout -text "Shelly/Outp.:"
  118. label .lcamx -text "camx:"
  119. label .lcamy -text "camy:"
  120. label .lcamz -text "camz:"
  121. pack .lload .lsave .lShout .lcamx .lcamy .lcamz -in .labels -side top -anchor w -pady 2m -padx 2m
  122.  
  123. entry .eload -relief sunken
  124.  
  125. bind .eload 
  126.  
  127. entry .esave -relief sunken
  128. entry .eShout -relief sunken
  129. .eShout insert 0 "/tmp/shell" 
  130. entry .ecamx -relief sunken
  131. .ecamx insert 0 "0" 
  132. entry .ecamy -relief sunken
  133. .ecamy insert 0 "10" 
  134. entry .ecamz -relief sunken
  135. .ecamz insert 0 "10" 
  136. pack .eload .esave .eShout .ecamx .ecamy .ecamz -in .entries -side top -anchor w -pady 2m -padx 2m
  137.  
  138. # create Buttons 
  139. button .bnew  -text " New! " -command reinit
  140. button .bload -text " Load " -command neuload
  141. button .bsave -text " Save " -command savefile
  142. button .bcalc -text " Calc " -command calcshell
  143. button .bcalcrender -text " Calc & Render " -command calcrender
  144. button .bcalcdisplx3d -text " Calc & Display X3D " -command calcdispl
  145. button .bexit -text " Exit! " -command "destroy ."
  146. pack .bload .bsave .bcalc .bcalcrender .bcalcdisplx3d .bnew .bexit -in .buttons -side left -padx 4m -pady 3m
  147.  
  148.