Changeset 1587


Ignore:
Timestamp:
Oct 23, 2009 8:46:28 AM (11 years ago)
Author:
dkearney
Message:

removing tabs from files and removing output sections from the tool.xml's in zoo examples.
tool.xml's should not include output sections, it is confusing and inefficient for users learning
to use rappture.

Location:
trunk
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/examples/zoo/choice/choice.tcl

    r115 r1587  
    1313set driver [Rappture::library [lindex $argv 0]]
    1414
     15$driver put output.choice(outs).about.label "Echo of choice"
    1516set choice [$driver get input.(stats).current]
    1617$driver put output.choice(outs).current $choice
  • trunk/examples/zoo/choice/tool.xml

    r429 r1587  
    4343  </choice>
    4444</input>
    45 <output>
    46   <choice id="outs">
    47     <about><label>Echo of choice</label></about>
    48   </choice>
    49 </output>
    5045</run>
  • trunk/examples/zoo/cloud/cloud.tcl

    r115 r1587  
    2323# Generate the 2D mesh and field values...
    2424#
     25$driver put output.cloud(m2d).about.label "2D Mesh"
     26$driver put output.cloud(m2d).units "um"
     27$driver put output.cloud(m2d).hide "yes"
     28
     29$driver put output.field(f2d).about.label "2D Field"
     30$driver put output.field(f2d).component.mesh "output.cloud(m2d)"
    2531set z 1
    2632for {set n 0} {$n < $npts} {incr n} {
     
    3642# Generate the 3D mesh and field values...
    3743#
     44$driver put output.cloud(m3d).about.label "3D Mesh"
     45$driver put output.cloud(m3d).units "um"
     46$driver put output.cloud(m3d).hide "yes"
     47
     48$driver put output.field(f3d).about.label "2D Field"
     49$driver put output.field(f3d).component.mesh "output.cloud(m3d)"
    3850for {set n 0} {$n < $npts} {incr n} {
    3951    set x [expr {rand()}]
  • trunk/examples/zoo/cloud/tool.xml

    r112 r1587  
    3030  </integer>
    3131</input>
    32 <output>
    33   <cloud id="m2d">
    34     <about><label>2D Mesh</label></about>
    35     <units>um</units>
    36     <hide>yes</hide>
    37   </cloud>
    38   <field id="f2d">
    39     <about><label>2D Field</label></about>
    40     <component>
    41       <mesh>output.cloud(m2d)</mesh>
    42       <values></values>
    43     </component>
    44   </field>
    45 
    46   <cloud id="m3d">
    47     <about><label>3D Mesh</label></about>
    48     <units>um</units>
    49     <hide>yes</hide>
    50   </cloud>
    51   <field id="f3d">
    52     <about><label>3D Field</label></about>
    53     <component>
    54       <mesh>output.cloud(m3d)</mesh>
    55       <values></values>
    56     </component>
    57   </field>
    58 </output>
    5932</run>
  • trunk/examples/zoo/field/field.tcl

    r572 r1587  
    2020# Generate the 2D mesh and field values...
    2121#
     22
     23$driver put output.cloud(m2d).about.label "2D Mesh"
     24$driver put output.cloud(m2d).units "um"
     25$driver put output.cloud(m2d).hide "yes"
     26
     27$driver put output.field(f2d).about.label "2D Field"
     28$driver put output.field(f2d).component.mesh "output.cloud(m2d)"
    2229set n 0
    2330set z 1
     
    6471# Generate the 3D mesh and field values...
    6572#
     73$driver put output.field(f3d).about.label "3D Field"
     74$driver put output.field(f3d).component.style "color blue:yellow:red"
    6675if {$vizmethod == "vtk"} {
    6776    set n 0
  • trunk/examples/zoo/field/tool.xml

    r942 r1587  
    4949  </choice>
    5050</input>
    51 <output>
    52   <cloud id="m2d">
    53     <about><label>2D Mesh</label></about>
    54     <units>um</units>
    55     <hide>yes</hide>
    56   </cloud>
    57   <field id="f2d">
    58     <about><label>2D Field</label></about>
    59     <component>
    60       <mesh>output.cloud(m2d)</mesh>
    61       <values></values>
    62     </component>
    63   </field>
    64 
    65   <field id="f3d">
    66     <about><label>3D Field</label></about>
    67     <component>
    68       <style>
    69         -color blue:yellow:red
    70       </style>
    71     </component>
    72   </field>
    73 </output>
    7451</run>
  • trunk/examples/zoo/image/image.tcl

    r864 r1587  
    2525blt::winop image rotate $imh $dest $angle
    2626
    27 $driver put output.image.current [$dest data -format jpeg]
     27$driver put output.image(outi).about.label "Rotated Image"
     28$driver put output.image(outi).current [$dest data -format jpeg]
    2829
    2930# add a little html note
    3031set htmltext "html://<p style=\"text-align: center;\"><a href=\"angles.html\">Learn more about angles...</a></p>"
    31 $driver put output.image.note.contents $htmltext
     32$driver put output.image(outi).note.contents $htmltext
    3233
    3334# save the updated XML describing the run...
  • trunk/examples/zoo/image/tool.xml

    r521 r1587  
    3636  </number>
    3737</input>
    38 <output>
    39   <image id="outi">
    40     <about><label>Rotated Image</label></about>
    41   </image>
    42 </output>
    4338</run>
  • trunk/examples/zoo/integer/integer.tcl

    r115 r1587  
    1414
    1515set n [$driver get input.(points).current]
     16$driver put output.integer(outn).about.label "Echo of points"
    1617$driver put output.integer(outn).current $n
    1718
  • trunk/examples/zoo/integer/tool.xml

    r69 r1587  
    2525  </integer>
    2626</input>
    27 <output>
    28   <integer id="outn">
    29     <about><label>Echo of points</label></about>
    30   </integer>
    31 </output>
    3227</run>
  • trunk/examples/zoo/sequence/sequence2.tcl

    r435 r1587  
    3131set xmax 1
    3232set npts 30
     33set elem output.sequence(outs).about.label "Sequence of Plots"
     34set elem output.sequence(outs).index.label "Parameter A"
    3335foreach A $avals {
    3436    set elem output.sequence(outs).element($A)
  • trunk/examples/zoo/sequence/tool2.xml

    r435 r1587  
    3838  </string>
    3939</input>
    40 <output>
    41   <sequence id="outs">
    42     <about><label>Sequence of Plots</label></about>
    43     <index><label>Parameter A</label></index>
    44   </sequence>
    45 </output>
    4640</run>
  • trunk/examples/zoo/string/string.tcl

    r115 r1587  
    1616set indeck [$driver get input.(indeck).current]
    1717
     18$driver put output.string(outt).about.label "Echo of title"
    1819$driver put output.string(outt).current $title
     20$driver put output.string(outi).about.label "Echo of input"
    1921$driver put output.string(outi).current $indeck
    2022
  • trunk/examples/zoo/string/tool.xml

    r69 r1587  
    3737  </string>
    3838</input>
    39 <output>
    40   <string id="outt">
    41     <about><label>Echo of title</label></about>
    42   </string>
    43 
    44   <string id="outi">
    45     <about><label>Echo of input</label></about>
    46   </string>
    47 </output>
    4839</run>
  • trunk/examples/zoo/table/energies.tcl

    r126 r1587  
    2424set nhomo [expr {round(rand()*19+1)}]
    2525
     26$driver put output.table.about.label "Energy Levels"
     27$driver put output.table.column(labels).label "Name"
     28$driver put output.table.column(energies).label "Energy"
     29$driver put output.table.column(energies).units "eV"
    2630for {set n 1} {$n <= 20} {incr n} {
    2731    set E [expr {$n*$n*$h*$h/(8.0*$m*$L*$L*$J2eV)}]  ;# in eV
  • trunk/examples/zoo/table/tool.xml

    r126 r1587  
    3232  </number>
    3333</input>
    34 <output>
    35   <table>
    36     <about>
    37         <label>Energy Levels</label>
    38     </about>
    39     <column id="labels">
    40         <label>Name</label>
    41     </column>
    42     <column id="energies">
    43         <label>Energy</label>
    44         <units>eV</units>
    45     </column>
    46   </table>
    47 </output>
    4834</run>
  • trunk/gui/scripts/curve.tcl

    r1562 r1587  
    1 
    21# ----------------------------------------------------------------------
    32#  COMPONENT: curve - extracts data from an XML description of a field
     
    2423itcl::class Rappture::Curve {
    2524    constructor {xmlobj path} {
    26         # defined below
     25        # defined below
    2726    }
    2827    destructor {
    29         # defined below
     28        # defined below
    3029    }
    3130
     
    283282            set xv [blt::vector create \#auto]
    284283            set yv [blt::vector create \#auto]
    285             $xv set [$_curve get $cname.xvector]
    286             $yv set [$_curve get $cname.yvector]
    287             if { [$xv length] != [$yv length] } {
    288                 blt::vector destroy $xv $yv
    289                 set xv ""; set yv ""
    290             }
    291         }
     284            $xv set [$_curve get $cname.xvector]
     285            $yv set [$_curve get $cname.yvector]
     286            if { [$xv length] != [$yv length] } {
     287                blt::vector destroy $xv $yv
     288                set xv ""; set yv ""
     289            }
     290        }
    292291        if {$xv != "" && $yv != ""} {
    293292            set _comp2xy($cname) [list $xv $yv]
  • trunk/gui/scripts/filexfer.tcl

    r1342 r1587  
    3939    #
    4040    foreach op {export import} {
    41         set prog "${op}file"
    42         set path [auto_execok $prog]
    43         if {"" == $path} {
    44             foreach dir {/apps/bin /apps/filexfer/bin} {
    45                 set p [file join $dir $prog]
    46                 if {[file executable $p]} {
    47                     set path $p
    48                     break
    49                 }
    50             }
    51         }
    52         if {[file executable $path]} {
    53             set commands($op) $path
    54         } else {
    55             return 0
    56         }
     41        set prog "${op}file"
     42        set path [auto_execok $prog]
     43        if {"" == $path} {
     44            foreach dir {/apps/bin /apps/filexfer/bin} {
     45                set p [file join $dir $prog]
     46                if {[file executable $p]} {
     47                    set path $p
     48                    break
     49                }
     50            }
     51        }
     52        if {[file executable $path]} {
     53            set commands($op) $path
     54        } else {
     55            return 0
     56        }
    5757    }
    5858
     
    8484proc Rappture::filexfer::label {operation} {
    8585    switch -- $operation {
    86         upload {
    87             if {[Rappture::filexfer::enabled]} {
    88                 return "Upload..."
    89             } else {
    90                 return "Load File..."
    91             }
    92         }
    93         download {
    94             if {[Rappture::filexfer::enabled]} {
    95                 return "Download"
    96             } else {
    97                 return "Save As..."
    98             }
    99         }
    100         downloadWord {
    101             if {[Rappture::filexfer::enabled]} {
    102                 return "Download"
    103             } else {
    104                 return "Save"
    105             }
    106         }
    107         default {
    108             error "bad option \"$operation\": should be upload, download, or downloadWord"
    109         }
     86        upload {
     87            if {[Rappture::filexfer::enabled]} {
     88                return "Upload..."
     89            } else {
     90                return "Load File..."
     91            }
     92        }
     93        download {
     94            if {[Rappture::filexfer::enabled]} {
     95                return "Download"
     96            } else {
     97                return "Save As..."
     98            }
     99        }
     100        downloadWord {
     101            if {[Rappture::filexfer::enabled]} {
     102                return "Download"
     103            } else {
     104                return "Save"
     105            }
     106        }
     107        default {
     108            error "bad option \"$operation\": should be upload, download, or downloadWord"
     109        }
    110110    }
    111111}
     
    133133
    134134    if {$enabled} {
    135         set cmd $commands(import)
    136         if {"" != $tool} {
    137             lappend cmd --for "for $tool"
    138         }
    139 
    140         set dir ~/data/sessions/$env(SESSION)/spool
    141         if {![file exists $dir]} {
    142             catch {file mkdir $dir}
    143         }
    144 
    145         set i 0
    146         foreach {path label desc} $controlList {
    147             set file [file join $dir upload[pid]-[incr i]]
    148             set file2path($file) $path
    149             set file2label($file) $label
    150             lappend cmd --label $label $file
    151         }
    152 
    153         uplevel #0 [list $callback error "Upload starting...\nA web browser page should pop up on your desktop.  Use that form to handle the upload operation.\n\nIf the upload form doesn't pop up, make sure that you're allowing pop ups from this site.  If it still doesn't pop up, you may be having trouble with the version of Java installed for your browser.  See our Support area for details.\n\nClick anywhere to dismiss this message."]
    154 
    155         set job(output) ""
    156         set job(error) ""
    157 
    158         set status [catch {eval \
    159             blt::bgexec ::Rappture::filexfer::job(control) \
    160               -output ::Rappture::filexfer::job(output) \
    161               -error ::Rappture::filexfer::job(error) \
    162               $cmd
    163         } result]
    164 
    165         if {$status == 0} {
    166             set changed ""
    167             set errs ""
    168             foreach file $job(output) {
    169                 # load the uploaded for this control
    170                 set status [catch {
    171                     set fid [open $file r]
    172                     fconfigure $fid -translation binary -encoding binary
    173                     set info [read $fid]
    174                     close $fid
    175                     file delete -force $file
    176                 } result]
    177 
    178                 if {$status != 0} {
    179                     append errs "Error loading data for \"$file2label($file)\":\n$result\n"
    180                 } else {
    181                     lappend changed $file2path($file)
    182                     uplevel #0 [list $callback path $file2path($file) data $info]
    183                 }
    184             }
    185             if {[llength $changed] == 0} {
    186                 set errs "The form was empty, so none of your controls were changed.  In order to upload a file, you must select the file name--or enter text into the copy/paste area--before pushing the Upload button."
    187             }
    188             if {[string length $errs] > 0} {
    189                 uplevel #0 [list $callback error $errs]
    190             }
    191         } else {
    192             uplevel #0 [list $callback error $job(error)]
    193         }
     135        set cmd $commands(import)
     136        if {"" != $tool} {
     137            lappend cmd --for "for $tool"
     138        }
     139
     140        set dir ~/data/sessions/$env(SESSION)/spool
     141        if {![file exists $dir]} {
     142            catch {file mkdir $dir}
     143        }
     144
     145        set i 0
     146        foreach {path label desc} $controlList {
     147            set file [file join $dir upload[pid]-[incr i]]
     148            set file2path($file) $path
     149            set file2label($file) $label
     150            lappend cmd --label $label $file
     151        }
     152
     153        uplevel #0 [list $callback error "Upload starting...\nA web browser page should pop up on your desktop.  Use that form to handle the upload operation.\n\nIf the upload form doesn't pop up, make sure that you're allowing pop ups from this site.  If it still doesn't pop up, you may be having trouble with the version of Java installed for your browser.  See our Support area for details.\n\nClick anywhere to dismiss this message."]
     154
     155        set job(output) ""
     156        set job(error) ""
     157
     158        set status [catch {eval \
     159            blt::bgexec ::Rappture::filexfer::job(control) \
     160              -output ::Rappture::filexfer::job(output) \
     161              -error ::Rappture::filexfer::job(error) \
     162              $cmd
     163        } result]
     164
     165        if {$status == 0} {
     166            set changed ""
     167            set errs ""
     168            foreach file $job(output) {
     169                # load the uploaded for this control
     170                set status [catch {
     171                    set fid [open $file r]
     172                    fconfigure $fid -translation binary -encoding binary
     173                    set info [read $fid]
     174                    close $fid
     175                    file delete -force $file
     176                } result]
     177
     178                if {$status != 0} {
     179                    append errs "Error loading data for \"$file2label($file)\":\n$result\n"
     180                } else {
     181                    lappend changed $file2path($file)
     182                    uplevel #0 [list $callback path $file2path($file) data $info]
     183                }
     184            }
     185            if {[llength $changed] == 0} {
     186                set errs "The form was empty, so none of your controls were changed.  In order to upload a file, you must select the file name--or enter text into the copy/paste area--before pushing the Upload button."
     187            }
     188            if {[string length $errs] > 0} {
     189                uplevel #0 [list $callback error $errs]
     190            }
     191        } else {
     192            uplevel #0 [list $callback error $job(error)]
     193        }
    194194    } else {
    195         #
    196         # Filexfer via importfile is disabled.  This tool must be
    197         # running in a desktop environment.  Instead of uploading,
    198         # perform a "Load File..." operation with a standard file
    199         # selection dialog.
    200         #
    201         set i 0
    202         foreach {path label desc} $controlList {
    203             set file [tk_getOpenFile -title "Load File: $label"]
    204             if {"" != $file} {
    205                 set cmds {
    206                     # try to read first as binary
    207                     set fid [open $file r]
    208                     fconfigure $fid -encoding binary -translation binary
    209                     set info [read $fid]
    210                     close $fid
    211                     if {![Rappture::encoding::is binary $info]} {
    212                         # not binary? then re-read and translate CR/LF
    213                         set fid [open $file r]
    214                         set info [read $fid]
    215                         close $fid
    216                     }
    217                 }
    218                 if {[catch $cmds err]} {
    219                     uplevel #0 [list $callback error "Error loading file [file tail $file]: $err"]
    220                 } else {
    221                     uplevel #0 [list $callback path $path data $info]
    222                 }
    223             }
    224         }
     195        #
     196        # Filexfer via importfile is disabled.  This tool must be
     197        # running in a desktop environment.  Instead of uploading,
     198        # perform a "Load File..." operation with a standard file
     199        # selection dialog.
     200        #
     201        set i 0
     202        foreach {path label desc} $controlList {
     203            set file [tk_getOpenFile -title "Load File: $label"]
     204            if {"" != $file} {
     205                set cmds {
     206                    # try to read first as binary
     207                    set fid [open $file r]
     208                    fconfigure $fid -encoding binary -translation binary
     209                    set info [read $fid]
     210                    close $fid
     211                    if {![Rappture::encoding::is binary $info]} {
     212                        # not binary? then re-read and translate CR/LF
     213                        set fid [open $file r]
     214                        set info [read $fid]
     215                        close $fid
     216                    }
     217                }
     218                if {[catch $cmds err]} {
     219                    uplevel #0 [list $callback error "Error loading file [file tail $file]: $err"]
     220                } else {
     221                    uplevel #0 [list $callback path $path data $info]
     222                }
     223            }
     224        }
    225225    }
    226226}
     
    246246
    247247    if {$enabled} {
    248         # make a spool directory, if we don't have one already
    249         set dir ~/data/sessions/$env(SESSION)/spool
    250         if {![file exists $dir]} {
    251             catch {file mkdir $dir}
    252         }
    253 
    254         if {[file exists [file join $dir $filename]]} {
    255             #
    256             # Find a similar file name that doesn't conflict
    257             # with an existing file:  e.g., output2.txt
    258             #
    259             set root [file rootname $filename]
    260             set ext [file extension $filename]
    261             set counter 2
    262             while {1} {
    263                 set filename "$root$counter$ext"
    264                 if {![file exists [file join $dir $filename]]} {
    265                     break
    266                 }
    267                 incr counter
    268             }
    269         }
    270 
    271         #
    272         # Save the file in the spool directory, then have it
    273         # exported.
    274         #
    275         if {[catch {
    276             set file [file join $dir $filename]
    277             set fid [open $file w]
    278             fconfigure $fid -encoding binary -translation binary
    279             puts -nonewline $fid $string
    280             close $fid
    281         } result]} {
    282             return $result
    283         }
    284 
    285         set job(output) ""
    286         set job(error) ""
    287 
    288         set status [catch {blt::bgexec ::Rappture::filexfer::job(control) \
    289             -output ::Rappture::filexfer::job(output) \
    290             -error ::Rappture::filexfer::job(error) \
    291             $commands(export) --timeout 300 --delete $file} result]
    292 
    293         if {$status != 0} {
    294             return $Rappture::filexfer::job(error)
    295         }
     248        # make a spool directory, if we don't have one already
     249        set dir ~/data/sessions/$env(SESSION)/spool
     250        if {![file exists $dir]} {
     251            catch {file mkdir $dir}
     252        }
     253
     254        if {[file exists [file join $dir $filename]]} {
     255            #
     256            # Find a similar file name that doesn't conflict
     257            # with an existing file:  e.g., output2.txt
     258            #
     259            set root [file rootname $filename]
     260            set ext [file extension $filename]
     261            set counter 2
     262            while {1} {
     263                set filename "$root$counter$ext"
     264                if {![file exists [file join $dir $filename]]} {
     265                    break
     266                }
     267                incr counter
     268            }
     269        }
     270
     271        #
     272        # Save the file in the spool directory, then have it
     273        # exported.
     274        #
     275        if {[catch {
     276            set file [file join $dir $filename]
     277            set fid [open $file w]
     278            fconfigure $fid -encoding binary -translation binary
     279            puts -nonewline $fid $string
     280            close $fid
     281        } result]} {
     282            return $result
     283        }
     284
     285        set job(output) ""
     286        set job(error) ""
     287
     288        set status [catch {blt::bgexec ::Rappture::filexfer::job(control) \
     289            -output ::Rappture::filexfer::job(output) \
     290            -error ::Rappture::filexfer::job(error) \
     291            $commands(export) --timeout 300 --delete $file} result]
     292
     293        if {$status != 0} {
     294            return $Rappture::filexfer::job(error)
     295        }
    296296    } else {
    297         #
    298         # Filexfer via exportfile is disabled.  This tool must be
    299         # running in a desktop environment.  Instead of downloading,
    300         # perform a "Save As..." operation with a standard file
    301         # selection dialog.
    302         #
    303         set file [tk_getSaveFile -title "Save As..." -initialfile $filename]
    304         # FIXME: Why is there a grab still pending?
    305         set grab [grab current]
    306         if { $grab != "" } {
    307             grab release $grab
    308         }
    309         if {"" != $file} {
    310             if {[catch {
    311                 set fid [open $file w]
    312                 if {[Rappture::encoding::is binary $string]} {
    313                     fconfigure $fid -encoding binary -translation binary
    314                     puts -nonewline $fid $string
    315                 } else {
    316                     puts $fid $string
    317                 }
    318                 close $fid
    319             } result]} {
    320                 return $result
    321             }
    322         }
     297        #
     298        # Filexfer via exportfile is disabled.  This tool must be
     299        # running in a desktop environment.  Instead of downloading,
     300        # perform a "Save As..." operation with a standard file
     301        # selection dialog.
     302        #
     303        set file [tk_getSaveFile -title "Save As..." -initialfile $filename]
     304        # FIXME: Why is there a grab still pending?
     305        set grab [grab current]
     306        if { $grab != "" } {
     307            grab release $grab
     308        }
     309        if {"" != $file} {
     310            if {[catch {
     311                set fid [open $file w]
     312                if {[Rappture::encoding::is binary $string]} {
     313                    fconfigure $fid -encoding binary -translation binary
     314                    puts -nonewline $fid $string
     315                } else {
     316                    puts $fid $string
     317                }
     318                close $fid
     319            } result]} {
     320                return $result
     321            }
     322        }
    323323    }
    324324    return ""
     
    334334proc Rappture::filexfer::webpage {url} {
    335335    if {[regexp -nocase {^https?://} $url]} {
    336         foreach prog {
    337               clientaction
    338               /apps/bin/clientaction
    339               /apps/xvnc/bin/clientaction
    340               ""
    341         } {
    342             if {"" != [auto_execok $prog]} {
    343                 break
    344             }
    345         }
    346         if {"" != $prog} {
    347             exec $prog url $url &
    348             return
    349         }
     336        foreach prog {
     337              clientaction
     338              /apps/bin/clientaction
     339              /apps/xvnc/bin/clientaction
     340              ""
     341        } {
     342            if {"" != [auto_execok $prog]} {
     343                break
     344            }
     345        }
     346        if {"" != $prog} {
     347            exec $prog url $url &
     348            return
     349        }
    350350    }
    351351    bell
  • trunk/gui/scripts/resultviewer.tcl

    r1550 r1587  
    5757    $_dispatcher register !scale
    5858    $_dispatcher dispatch $this !scale \
    59         [itcl::code $this _fixScale]
     59        [itcl::code $this _fixScale]
    6060
    6161    eval itk_initialize $args
     
    6767itcl::body Rappture::ResultViewer::destructor {} {
    6868    foreach slot $_dataslots {
    69         foreach obj $slot {
    70             itcl::delete object $obj
    71         }
     69        foreach obj $slot {
     70            itcl::delete object $obj
     71        }
    7272    }
    7373}
     
    8787    #
    8888    for {set i [llength $_dataslots]} {$i <= $index} {incr i} {
    89         lappend _dataslots ""
     89        lappend _dataslots ""
    9090    }
    9191    set slot [lindex $_dataslots $index]
     
    103103itcl::body Rappture::ResultViewer::clear {{index ""}} {
    104104    if {"" != $index} {
    105         # clear one result
    106         if {$index >= 0 && $index < [llength $_dataslots]} {
    107             set slot [lindex $_dataslots $index]
    108             foreach dobj $slot {
    109                 itcl::delete object $dobj
    110             }
    111             set _dataslots [lreplace $_dataslots $index $index ""]
    112         }
     105        # clear one result
     106        if {$index >= 0 && $index < [llength $_dataslots]} {
     107            set slot [lindex $_dataslots $index]
     108            foreach dobj $slot {
     109                itcl::delete object $dobj
     110            }
     111            set _dataslots [lreplace $_dataslots $index $index ""]
     112        }
    113113    } else {
    114         # clear all results
    115         plot clear
    116         foreach slot $_dataslots {
    117             foreach dobj $slot {
    118                 itcl::delete object $dobj
    119             }
    120         }
    121         set _dataslots ""
     114        # clear all results
     115        plot clear
     116        foreach slot $_dataslots {
     117            foreach dobj $slot {
     118                itcl::delete object $dobj
     119            }
     120        }
     121        set _dataslots ""
    122122    }
    123123}
     
    134134    clear
    135135    if {"" != $xmlobj} {
    136         add 0 $xmlobj ""
    137         plot add 0 ""
     136        add 0 $xmlobj ""
     137        plot add 0 ""
    138138    }
    139139}
     
    152152itcl::body Rappture::ResultViewer::plot {option args} {
    153153    switch -- $option {
    154         add {
    155             set params ""
    156             foreach {index opts} $args {
    157                 if {$index == "params"} {
    158                     set params $opts
    159                     continue
    160                 }
    161                 set reset "-color autoreset"
    162                 set slot [lindex $_dataslots $index]
    163                 foreach dobj $slot {
    164                     set settings ""
    165                     # start with color reset, only for first object in series
    166                     if {"" != $reset} {
    167                         set settings $reset
    168                         set reset ""
    169                     }
    170                     # add default settings from data object
    171                     if {[catch {$dobj hints style} style] == 0} {
    172                         eval lappend settings $style
    173                     }
    174                     if {[catch {$dobj hints type} type] == 0} {
    175                         if {"" != $type} {
    176                             eval lappend settings "-type $type"
    177                         }
    178                     }
    179                     # add override settings passed in here
    180                     eval lappend settings $opts
    181 
    182                     _plotAdd $dobj $settings
    183                 }
    184             }
    185             if {"" != $params && "" != $_mode} {
    186                 eval $_mode2widget($_mode) parameters $params
    187             }
    188         }
    189         clear {
    190             # clear the contents of the current mode
    191             if {"" != $_mode} {
    192                 $_mode2widget($_mode) delete
    193             }
    194         }
    195         default {
    196             error "bad option \"$option\": should be add or clear"
    197         }
     154        add {
     155            set params ""
     156            foreach {index opts} $args {
     157                if {$index == "params"} {
     158                    set params $opts
     159                    continue
     160                }
     161                set reset "-color autoreset"
     162                set slot [lindex $_dataslots $index]
     163                foreach dobj $slot {
     164                    set settings ""
     165                    # start with color reset, only for first object in series
     166                    if {"" != $reset} {
     167                        set settings $reset
     168                        set reset ""
     169                    }
     170                    # add default settings from data object
     171                    if {[catch {$dobj hints style} style] == 0} {
     172                        eval lappend settings $style
     173                    }
     174                    if {[catch {$dobj hints type} type] == 0} {
     175                        if {"" != $type} {
     176                            eval lappend settings "-type $type"
     177                        }
     178                    }
     179                    # add override settings passed in here
     180                    eval lappend settings $opts
     181
     182                    _plotAdd $dobj $settings
     183                }
     184            }
     185            if {"" != $params && "" != $_mode} {
     186                eval $_mode2widget($_mode) parameters $params
     187            }
     188        }
     189        clear {
     190            # clear the contents of the current mode
     191            if {"" != $_mode} {
     192                $_mode2widget($_mode) delete
     193            }
     194        }
     195        default {
     196            error "bad option \"$option\": should be add or clear"
     197        }
    198198    }
    199199}
     
    209209itcl::body Rappture::ResultViewer::_plotAdd {dataobj {settings ""}} {
    210210    switch -- [$dataobj info class] {
    211         ::Rappture::Histogram {
    212             set mode "histogram"
    213             if {![info exists _mode2widget($mode)]} {
    214                 set w $itk_interior.xy
    215                 Rappture::HistogramResult $w
    216                 set _mode2widget($mode) $w
    217             }
    218         }
    219         ::Rappture::Curve {
    220             set type [$dataobj hints type]
    221             set mode "xy"
    222             if { $type == "bars" } {
    223                 if {![info exists _mode2widget($mode)]} {
    224                     set w $itk_interior.xy
    225                     Rappture::BarResult $w
    226                     set _mode2widget($mode) $w
    227                 }
    228             } else {
    229                 if {![info exists _mode2widget($mode)]} {
    230                     set w $itk_interior.xy
    231                     Rappture::XyResult $w
    232                     set _mode2widget($mode) $w
    233                 }
    234             }
    235         }
    236         ::Rappture::Field {
    237             set dims [lindex [lsort [$dataobj components -dimensions]] end]
    238             switch -- $dims {
    239                 1D {
    240                     set mode "xy"
    241                     if {![info exists _mode2widget($mode)]} {
    242                         set w $itk_interior.xy
    243                         Rappture::XyResult $w
    244                         set _mode2widget($mode) $w
    245                     }
    246                 }
    247                 2D {
    248                     set mode "contour"
    249                     if {![info exists _mode2widget($mode)]} {
    250                         if { [$dataobj isunirect2d] } {
    251                             set resultMode "heightmap"
    252                         } else {
    253                             set resultMode "vtk"
    254                         }
    255                         set extents [$dataobj extents]
    256                         if { $extents > 1 } {
    257                             set resultMode "flowvis"
    258                         }
    259                         set w $itk_interior.contour
    260                         if { ![winfo exists $w] } {
    261                             Rappture::Field2DResult $w -mode $resultMode
    262                         }
    263                         set _mode2widget($mode) $w
    264                     }
    265                 }
    266                 3D {
    267                     set mode "field3D"
    268                     if {![info exists _mode2widget($mode)]} {
    269                         set mesh [$dataobj mesh]
    270                         set fmt [expr {("" != $mesh) ? "vtk" : "nanovis"}]
    271                         set extents [$dataobj extents]
    272                         if { $extents > 1 } {
    273                             set fmt "flowvis"
    274                         }
    275                         set w $itk_interior.field3D
    276                         Rappture::Field3DResult $w -mode $fmt
    277                         set _mode2widget($mode) $w
    278                     }
    279                 }
    280                 default {
    281                     error "can't handle [$dataobj components -dimensions] field"
    282                 }
    283             }
    284         }
    285         ::Rappture::Mesh {
    286             switch -- [$dataobj dimensions] {
    287                 2 {
    288                     set mode "mesh"
    289                     if {![info exists _mode2widget($mode)]} {
    290                         set w $itk_interior.mesh
    291                         Rappture::MeshResult $w
    292                         set _mode2widget($mode) $w
    293                     }
    294                 }
    295                 default {
    296                     error "can't handle [$dataobj dimensions]D field"
    297                 }
    298             }
    299         }
    300         ::Rappture::Table {
    301             set cols [Rappture::EnergyLevels::columns $dataobj]
    302             if {"" != $cols} {
    303                 set mode "energies"
    304                 if {![info exists _mode2widget($mode)]} {
    305                     set w $itk_interior.energies
    306                     Rappture::EnergyLevels $w
    307                     set _mode2widget($mode) $w
    308                 }
    309             }
    310         }
    311         ::Rappture::LibraryObj {
    312             switch -- [$dataobj element -as type] {
    313                 string - log {
    314                     set mode "log"
    315                     if {![info exists _mode2widget($mode)]} {
    316                         set w $itk_interior.log
    317                         Rappture::TextResult $w
    318                         set _mode2widget($mode) $w
    319                     }
    320                 }
    321                 structure {
    322                     set mode "structure"
    323                     if {![info exists _mode2widget($mode)]} {
    324                         set w $itk_interior.struct
    325                         Rappture::DeviceResult $w
    326                         set _mode2widget($mode) $w
    327                     }
    328                 }
    329                 number - integer {
    330                     set mode "number"
    331                     if {![info exists _mode2widget($mode)]} {
    332                         set w $itk_interior.number
    333                         Rappture::NumberResult $w
    334                         set _mode2widget($mode) $w
    335                     }
    336                 }
    337                 boolean - choice {
    338                     set mode "value"
    339                     if {![info exists _mode2widget($mode)]} {
    340                         set w $itk_interior.value
    341                         Rappture::ValueResult $w
    342                         set _mode2widget($mode) $w
    343                     }
    344                 }
    345             }
    346         }
    347         ::Rappture::Image {
    348             set mode "image"
    349             if {![info exists _mode2widget($mode)]} {
    350                 set w $itk_interior.image
    351                 Rappture::ImageResult $w
    352                 set _mode2widget($mode) $w
    353             }
    354         }
    355         ::Rappture::Sequence {
    356             set mode "sequence"
    357             if {![info exists _mode2widget($mode)]} {
    358                 set w $itk_interior.image
    359                 Rappture::SequenceResult $w
    360                 set _mode2widget($mode) $w
    361             }
    362         }
    363         default {
    364             error "don't know how to plot <$type> data"
    365         }
     211        ::Rappture::Histogram {
     212            set mode "histogram"
     213            if {![info exists _mode2widget($mode)]} {
     214                set w $itk_interior.xy
     215                Rappture::HistogramResult $w
     216                set _mode2widget($mode) $w
     217            }
     218        }
     219        ::Rappture::Curve {
     220            set type [$dataobj hints type]
     221            set mode "xy"
     222            if { $type == "bars" } {
     223                if {![info exists _mode2widget($mode)]} {
     224                    set w $itk_interior.xy
     225                    Rappture::BarResult $w
     226                    set _mode2widget($mode) $w
     227                }
     228            } else {
     229                if {![info exists _mode2widget($mode)]} {
     230                    set w $itk_interior.xy
     231                    Rappture::XyResult $w
     232                    set _mode2widget($mode) $w
     233                }
     234            }
     235        }
     236        ::Rappture::Field {
     237            set dims [lindex [lsort [$dataobj components -dimensions]] end]
     238            switch -- $dims {
     239                1D {
     240                    set mode "xy"
     241                    if {![info exists _mode2widget($mode)]} {
     242                        set w $itk_interior.xy
     243                        Rappture::XyResult $w
     244                        set _mode2widget($mode) $w
     245                    }
     246                }
     247                2D {
     248                    set mode "contour"
     249                    if {![info exists _mode2widget($mode)]} {
     250                        if { [$dataobj isunirect2d] } {
     251                            set resultMode "heightmap"
     252                        } else {
     253                            set resultMode "vtk"
     254                        }
     255                        set extents [$dataobj extents]
     256                        if { $extents > 1 } {
     257                            set resultMode "flowvis"
     258                        }
     259                        set w $itk_interior.contour
     260                        if { ![winfo exists $w] } {
     261                            Rappture::Field2DResult $w -mode $resultMode
     262                        }
     263                        set _mode2widget($mode) $w
     264                    }
     265                }
     266                3D {
     267                    set mode "field3D"
     268                    if {![info exists _mode2widget($mode)]} {
     269                        set mesh [$dataobj mesh]
     270                        set fmt [expr {("" != $mesh) ? "vtk" : "nanovis"}]
     271                        set extents [$dataobj extents]
     272                        if { $extents > 1 } {
     273                            set fmt "flowvis"
     274                        }
     275                        set w $itk_interior.field3D
     276                        Rappture::Field3DResult $w -mode $fmt
     277                        set _mode2widget($mode) $w
     278                    }
     279                }
     280                default {
     281                    error "can't handle [$dataobj components -dimensions] field"
     282                }
     283            }
     284        }
     285        ::Rappture::Mesh {
     286            switch -- [$dataobj dimensions] {
     287                2 {
     288                    set mode "mesh"
     289                    if {![info exists _mode2widget($mode)]} {
     290                        set w $itk_interior.mesh
     291                        Rappture::MeshResult $w
     292                        set _mode2widget($mode) $w
     293                    }
     294                }
     295                default {
     296                    error "can't handle [$dataobj dimensions]D field"
     297                }
     298            }
     299        }
     300        ::Rappture::Table {
     301            set cols [Rappture::EnergyLevels::columns $dataobj]
     302            if {"" != $cols} {
     303                set mode "energies"
     304                if {![info exists _mode2widget($mode)]} {
     305                    set w $itk_interior.energies
     306                    Rappture::EnergyLevels $w
     307                    set _mode2widget($mode) $w
     308                }
     309            }
     310        }
     311        ::Rappture::LibraryObj {
     312            switch -- [$dataobj element -as type] {
     313                string - log {
     314                    set mode "log"
     315                    if {![info exists _mode2widget($mode)]} {
     316                        set w $itk_interior.log
     317                        Rappture::TextResult $w
     318                        set _mode2widget($mode) $w
     319                    }
     320                }
     321                structure {
     322                    set mode "structure"
     323                    if {![info exists _mode2widget($mode)]} {
     324                        set w $itk_interior.struct
     325                        Rappture::DeviceResult $w
     326                        set _mode2widget($mode) $w
     327                    }
     328                }
     329                number - integer {
     330                    set mode "number"
     331                    if {![info exists _mode2widget($mode)]} {
     332                        set w $itk_interior.number
     333                        Rappture::NumberResult $w
     334                        set _mode2widget($mode) $w
     335                    }
     336                }
     337                boolean - choice {
     338                    set mode "value"
     339                    if {![info exists _mode2widget($mode)]} {
     340                        set w $itk_interior.value
     341                        Rappture::ValueResult $w
     342                        set _mode2widget($mode) $w
     343                    }
     344                }
     345            }
     346        }
     347        ::Rappture::Image {
     348            set mode "image"
     349            if {![info exists _mode2widget($mode)]} {
     350                set w $itk_interior.image
     351                Rappture::ImageResult $w
     352                set _mode2widget($mode) $w
     353            }
     354        }
     355        ::Rappture::Sequence {
     356            set mode "sequence"
     357            if {![info exists _mode2widget($mode)]} {
     358                set w $itk_interior.image
     359                Rappture::SequenceResult $w
     360                set _mode2widget($mode) $w
     361            }
     362        }
     363        default {
     364            error "don't know how to plot <$type> data"
     365        }
    366366    }
    367367
    368368    if {$mode != $_mode && $_mode != ""} {
    369         set nactive [llength [$_mode2widget($_mode) get]]
    370         if {$nactive > 0} {
    371             return  ;# mixing data that doesn't mix -- ignore it!
    372         }
     369        set nactive [llength [$_mode2widget($_mode) get]]
     370        if {$nactive > 0} {
     371            return  ;# mixing data that doesn't mix -- ignore it!
     372        }
    373373    }
    374374
    375375    # are we plotting in a new mode? then change widgets
    376376    if {$_mode2widget($mode) != [pack slaves $itk_interior]} {
    377         # remove any current window
    378         foreach w [pack slaves $itk_interior] {
    379             pack forget $w
    380         }
    381         pack $_mode2widget($mode) -expand yes -fill both
    382 
    383         set _mode $mode
    384         $_dispatcher event -idle !scale
     377        # remove any current window
     378        foreach w [pack slaves $itk_interior] {
     379            pack forget $w
     380        }
     381        pack $_mode2widget($mode) -expand yes -fill both
     382
     383        set _mode $mode
     384        $_dispatcher event -idle !scale
    385385    }
    386386    $_mode2widget($mode) add $dataobj $settings
     
    397397itcl::body Rappture::ResultViewer::_fixScale {args} {
    398398    if {"" != $_mode} {
    399         set dlist ""
    400         foreach slot $_dataslots {
    401             foreach dobj $slot {
    402                 lappend dlist $dobj
    403             }
    404         }
    405         eval $_mode2widget($_mode) scale $dlist
     399        set dlist ""
     400        foreach slot $_dataslots {
     401            foreach dobj $slot {
     402                lappend dlist $dobj
     403            }
     404        }
     405        eval $_mode2widget($_mode) scale $dlist
    406406    }
    407407}
     
    419419itcl::body Rappture::ResultViewer::download {option args} {
    420420    if {"" == $_mode} {
    421         return ""
     421        return ""
    422422    }
    423423    return [eval $_mode2widget($_mode) download $option $args]
     
    433433    set type [$xmlobj element -as type $path]
    434434    switch -- $type {
    435         curve {
    436             return [Rappture::Curve ::#auto $xmlobj $path]
    437         }
    438         histogram {
    439             return [Rappture::Histogram ::#auto $xmlobj $path]
    440         }
    441         field {
    442             return [Rappture::Field ::#auto $xmlobj $path]
    443         }
    444         mesh {
    445             return [Rappture::Mesh ::#auto $xmlobj $path]
    446         }
    447         table {
    448             return [Rappture::Table ::#auto $xmlobj $path]
    449         }
    450         image {
    451             return [Rappture::Image ::#auto $xmlobj $path]
    452         }
    453         sequence {
    454             return [Rappture::Sequence ::#auto $xmlobj $path]
    455         }
    456         string - log {
    457             return [$xmlobj element -as object $path]
    458         }
    459         structure {
    460             return [$xmlobj element -as object $path]
    461         }
    462         number - integer - boolean - choice {
    463             return [$xmlobj element -as object $path]
    464         }
    465         time - status {
    466             return ""
    467         }
     435        curve {
     436            return [Rappture::Curve ::#auto $xmlobj $path]
     437        }
     438        histogram {
     439            return [Rappture::Histogram ::#auto $xmlobj $path]
     440        }
     441        field {
     442            return [Rappture::Field ::#auto $xmlobj $path]
     443        }
     444        mesh {
     445            return [Rappture::Mesh ::#auto $xmlobj $path]
     446        }
     447        table {
     448            return [Rappture::Table ::#auto $xmlobj $path]
     449        }
     450        image {
     451            return [Rappture::Image ::#auto $xmlobj $path]
     452        }
     453        sequence {
     454            return [Rappture::Sequence ::#auto $xmlobj $path]
     455        }
     456        string - log {
     457            return [$xmlobj element -as object $path]
     458        }
     459        structure {
     460            return [$xmlobj element -as object $path]
     461        }
     462        number - integer - boolean - choice {
     463            return [$xmlobj element -as object $path]
     464        }
     465        time - status {
     466            return ""
     467        }
    468468    }
    469469    error "don't know how to plot <$type> data"
     
    477477    set h [winfo pixels $itk_component(hull) $itk_option(-height)]
    478478    if {$w == 0 || $h == 0} {
    479         pack propagate $itk_component(hull) yes
     479        pack propagate $itk_component(hull) yes
    480480    } else {
    481         component hull configure -width $w -height $h
    482         pack propagate $itk_component(hull) no
     481        component hull configure -width $w -height $h
     482        pack propagate $itk_component(hull) no
    483483    }
    484484}
     
    491491    set w [winfo pixels $itk_component(hull) $itk_option(-width)]
    492492    if {$w == 0 || $h == 0} {
    493         pack propagate $itk_component(hull) yes
     493        pack propagate $itk_component(hull) yes
    494494    } else {
    495         component hull configure -width $w -height $h
    496         pack propagate $itk_component(hull) no
    497     }
    498 }
     495        component hull configure -width $w -height $h
     496        pack propagate $itk_component(hull) no
     497    }
     498}
Note: See TracChangeset for help on using the changeset viewer.