Ignore:
Timestamp:
Mar 18, 2009, 2:59:21 PM (16 years ago)
Author:
gah
Message:

preliminary HQ output from molvisviewer; unexpand tabs; all jpeg generation at 100%

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/scripts/analyzer.tcl

    r1274 r1342  
    9898
    9999    itk_component add simbg {
    100         frame $itk_interior.simol.simbg -borderwidth 0
     100        frame $itk_interior.simol.simbg -borderwidth 0
    101101    } {
    102         usual
    103         rename -background -simcontrolcolor simControlColor Color
     102        usual
     103        rename -background -simcontrolcolor simControlColor Color
    104104    }
    105105    pack $itk_component(simbg) -expand yes -fill both
     
    107107    set simtxt [$tool xml get tool.action.label]
    108108    if {"" == $simtxt} {
    109         set simtxt "Simulate"
     109        set simtxt "Simulate"
    110110    }
    111111    itk_component add simulate {
    112         button $itk_component(simbg).simulate -text $simtxt \
    113             -command [itcl::code $this simulate]
     112        button $itk_component(simbg).simulate -text $simtxt \
     113            -command [itcl::code $this simulate]
    114114    } {
    115         usual
    116         rename -highlightbackground -simcontrolcolor simControlColor Color
     115        usual
     116        rename -highlightbackground -simcontrolcolor simControlColor Color
    117117    }
    118118    pack $itk_component(simulate) -side left -padx 4 -pady 4
     
    122122    set url [Rappture::Tool::resources -huburl]
    123123    if {"" != $url && "" != $app} {
    124         itk_component add hubcntls {
    125             frame $itk_component(simbg).hubcntls
    126         } {
    127             usual
    128             rename -background -simcontrolcolor simControlColor Color
    129         }
    130         pack $itk_component(hubcntls) -side right -padx 4
    131 
    132         itk_component add icon {
    133             label $itk_component(hubcntls).icon -image [Rappture::icon ask] \
    134                 -highlightthickness 0
    135         } {
    136             usual
    137             ignore -highlightthickness
    138             rename -background -simcontrolcolor simControlColor Color
    139         }
    140         pack $itk_component(icon) -side left
    141 
    142         itk_component add about {
    143             button $itk_component(hubcntls).about -text "About this tool" \
    144                 -command [list Rappture::filexfer::webpage "$url/tools/$app"]
    145         } {
    146             usual
    147             ignore -font
    148             rename -background -simcontrolcolor simControlColor Color
    149             rename -highlightbackground -simcontrolcolor simControlColor Color
    150         }
    151         pack $itk_component(about) -side top -anchor w
    152 
    153         itk_component add questions {
    154             button $itk_component(hubcntls).questions -text Questions? \
    155                 -command [list Rappture::filexfer::webpage "$url/resources/$app/questions"]
    156         } {
    157             usual
    158             ignore -font
    159             rename -background -simcontrolcolor simControlColor Color
    160             rename -highlightbackground -simcontrolcolor simControlColor Color
    161         }
    162         pack $itk_component(questions) -side top -anchor w
     124        itk_component add hubcntls {
     125            frame $itk_component(simbg).hubcntls
     126        } {
     127            usual
     128            rename -background -simcontrolcolor simControlColor Color
     129        }
     130        pack $itk_component(hubcntls) -side right -padx 4
     131
     132        itk_component add icon {
     133            label $itk_component(hubcntls).icon -image [Rappture::icon ask] \
     134                -highlightthickness 0
     135        } {
     136            usual
     137            ignore -highlightthickness
     138            rename -background -simcontrolcolor simControlColor Color
     139        }
     140        pack $itk_component(icon) -side left
     141
     142        itk_component add about {
     143            button $itk_component(hubcntls).about -text "About this tool" \
     144                -command [list Rappture::filexfer::webpage "$url/tools/$app"]
     145        } {
     146            usual
     147            ignore -font
     148            rename -background -simcontrolcolor simControlColor Color
     149            rename -highlightbackground -simcontrolcolor simControlColor Color
     150        }
     151        pack $itk_component(about) -side top -anchor w
     152
     153        itk_component add questions {
     154            button $itk_component(hubcntls).questions -text Questions? \
     155                -command [list Rappture::filexfer::webpage "$url/resources/$app/questions"]
     156        } {
     157            usual
     158            ignore -font
     159            rename -background -simcontrolcolor simControlColor Color
     160            rename -highlightbackground -simcontrolcolor simControlColor Color
     161        }
     162        pack $itk_component(questions) -side top -anchor w
    163163    }
    164164
    165165    itk_component add simstatus {
    166         text $itk_component(simbg).simstatus -borderwidth 0 \
    167             -highlightthickness 0 -height 1 -width 1 -wrap none \
    168             -state disabled
     166        text $itk_component(simbg).simstatus -borderwidth 0 \
     167            -highlightthickness 0 -height 1 -width 1 -wrap none \
     168            -state disabled
    169169    } {
    170         usual
    171         ignore -highlightthickness
    172         rename -background -simcontrolcolor simControlColor Color
    173         rename -font -textfont textFont Font
     170        usual
     171        ignore -highlightthickness
     172        rename -background -simcontrolcolor simControlColor Color
     173        rename -font -textfont textFont Font
    174174    }
    175175    pack $itk_component(simstatus) -side left -expand yes -fill x
    176176
    177177    $itk_component(simstatus) tag configure popup \
    178         -underline 1 -foreground blue
     178        -underline 1 -foreground blue
    179179
    180180    $itk_component(simstatus) tag bind popup \
    181         <Enter> {%W configure -cursor center_ptr}
     181        <Enter> {%W configure -cursor center_ptr}
    182182    $itk_component(simstatus) tag bind popup \
    183         <Leave> {%W configure -cursor ""}
     183        <Leave> {%W configure -cursor ""}
    184184    $itk_component(simstatus) tag bind popup \
    185         <ButtonPress> {after idle {Rappture::Tooltip::tooltip show %W}}
     185        <ButtonPress> {after idle {Rappture::Tooltip::tooltip show %W}}
    186186
    187187
    188188    itk_component add notebook {
    189         Rappture::Notebook $itk_interior.nb
     189        Rappture::Notebook $itk_interior.nb
    190190    }
    191191    pack $itk_interior.nb -expand yes -fill both
     
    199199    pack $w.info -expand yes -fill both -padx 4 -pady 20
    200200    itk_component add toolinfo {
    201         text $w.info.text -width 1 -height 1 -wrap word \
    202             -borderwidth 0 -highlightthickness 0
     201        text $w.info.text -width 1 -height 1 -wrap word \
     202            -borderwidth 0 -highlightthickness 0
    203203    } {
    204         usual
    205         ignore -borderwidth -relief
    206         rename -font -textfont textFont Font
     204        usual
     205        ignore -borderwidth -relief
     206        rename -font -textfont textFont Font
    207207    }
    208208    $w.info contents $w.info.text
     
    218218
    219219    itk_component add abort {
    220         button $w.cntls.abort -text "Abort" \
    221             -command [itcl::code $_tool abort]
     220        button $w.cntls.abort -text "Abort" \
     221            -command [itcl::code $_tool abort]
    222222    }
    223223    pack $itk_component(abort) -side left -expand yes -padx 4 -pady 4
     
    226226    pack $w.info -expand yes -fill both -padx 4 -pady 4
    227227    itk_component add runinfo {
    228         text $w.info.text -width 1 -height 1 -wrap none \
    229             -borderwidth 0 -highlightthickness 0 \
    230             -state disabled
     228        text $w.info.text -width 1 -height 1 -wrap none \
     229            -borderwidth 0 -highlightthickness 0 \
     230            -state disabled
    231231    } {
    232         usual
    233         ignore -borderwidth -relief
    234         rename -font -codefont codeFont Font
     232        usual
     233        ignore -borderwidth -relief
     234        rename -font -codefont codeFont Font
    235235    }
    236236    $w.info contents $w.info.text
    237237
    238238    itk_component add progress {
    239         Rappture::Progress $w.progress
     239        Rappture::Progress $w.progress
    240240    }
    241241
     
    251251
    252252    itk_component add resultselector {
    253         Rappture::Combobox $w.top.sel -width 10 -editable no
     253        Rappture::Combobox $w.top.sel -width 10 -editable no
    254254    } {
    255         usual
    256         rename -font -textfont textFont Font
     255        usual
     256        rename -font -textfont textFont Font
    257257    }
    258258    pack $itk_component(resultselector) -side left -expand yes -fill x
    259259    bind $itk_component(resultselector) <<Value>> [itcl::code $this _fixResult]
    260260    bind $itk_component(resultselector) <Enter> \
    261         [itcl::code $this download coming]
     261        [itcl::code $this download coming]
    262262
    263263    Rappture::Tooltip::for $itk_component(resultselector) \
    264         "@[itcl::code $this _resultTooltip]"
     264        "@[itcl::code $this _resultTooltip]"
    265265
    266266    $itk_component(resultselector) choices insert end \
    267         --- "---"
     267        --- "---"
    268268
    269269    itk_component add download {
    270         button $w.top.dl -image [Rappture::icon download] -anchor e \
    271             -borderwidth 1 -relief flat -overrelief raised \
    272             -command [itcl::code $this download start $w.top.dl]
     270        button $w.top.dl -image [Rappture::icon download] -anchor e \
     271            -borderwidth 1 -relief flat -overrelief raised \
     272            -command [itcl::code $this download start $w.top.dl]
    273273    }
    274274    pack $itk_component(download) -side right -padx {4 0}
    275275    bind $itk_component(download) <Enter> \
    276         [itcl::code $this download coming]
     276        [itcl::code $this download coming]
    277277
    278278    $itk_component(resultselector) choices insert end \
    279         @download [Rappture::filexfer::label download]
     279        @download [Rappture::filexfer::label download]
    280280
    281281    if {[Rappture::filexfer::enabled]} {
    282         Rappture::Tooltip::for $itk_component(download) "Downloads the current result to a new web browser window on your desktop.  From there, you can easily print or save results.
     282        Rappture::Tooltip::for $itk_component(download) "Downloads the current result to a new web browser window on your desktop.  From there, you can easily print or save results.
    283283
    284284NOTE:  Your web browser must allow pop-ups from this site.  If your output does not appear, look for a 'pop-up blocked' message and enable pop-ups."
    285285    } else {
    286         Rappture::Tooltip::for $itk_component(download) "Saves the current result to a file on your desktop."
     286        Rappture::Tooltip::for $itk_component(download) "Saves the current result to a file on your desktop."
    287287    }
    288288
    289289    itk_component add results {
    290         Rappture::Panes $w.pane -sashwidth 1 -sashrelief solid -sashpadding {4 0}
     290        Rappture::Panes $w.pane -sashwidth 1 -sashrelief solid -sashpadding {4 0}
    291291    }
    292292    pack $itk_component(results) -expand yes -fill both
     
    294294
    295295    itk_component add resultpages {
    296         Rappture::Notebook $f.nb
     296        Rappture::Notebook $f.nb
    297297    }
    298298    pack $itk_component(resultpages) -expand yes -fill both
     
    300300    set f [$itk_component(results) insert end -fraction 0.1]
    301301    itk_component add resultset {
    302         Rappture::ResultSet $f.rset \
    303             -clearcommand [itcl::code $this clear] \
    304             -settingscommand [itcl::code $this _plot] \
    305             -promptcommand [itcl::code $this _simState]
     302        Rappture::ResultSet $f.rset \
     303            -clearcommand [itcl::code $this clear] \
     304            -settingscommand [itcl::code $this _plot] \
     305            -promptcommand [itcl::code $this _simState]
    306306    }
    307307    pack $itk_component(resultset) -expand yes -fill both
     
    318318    #
    319319    $itk_component(toolinfo) tag configure title \
    320         -font $itk_option(-boldtextfont)
     320        -font $itk_option(-boldtextfont)
    321321
    322322    set mesg [$tool xml get tool.title]
    323323    if {"" != $mesg} {
    324         $itk_component(toolinfo) insert end $mesg title
    325         $itk_component(toolinfo) insert end "\n\n"
     324        $itk_component(toolinfo) insert end $mesg title
     325        $itk_component(toolinfo) insert end "\n\n"
    326326    }
    327327
    328328    set mesg [$tool xml get tool.about]
    329329    if {"" != $mesg} {
    330         $itk_component(toolinfo) insert end $mesg
     330        $itk_component(toolinfo) insert end $mesg
    331331    }
    332332    $itk_component(toolinfo) configure -state disabled
     
    336336    set cntl [$tool xml get tool.control]
    337337    if {"" == $cntl} {
    338         set cntl [$tool xml get tool.control.type]
     338        set cntl [$tool xml get tool.control.type]
    339339    }
    340340    if {"" != $cntl} {
    341         set _control $cntl
     341        set _control $cntl
    342342    }
    343343
     
    351351itcl::body Rappture::Analyzer::destructor {} {
    352352    foreach obj $_runs {
    353         itcl::delete object $obj
     353        itcl::delete object $obj
    354354    }
    355355    after cancel [itcl::code $this simulate]
     
    368368itcl::body Rappture::Analyzer::simulate {args} {
    369369    if {$args == "-ifneeded"} {
    370         # check to see if simulation is really needed
    371         $_tool sync
    372         if {[$itk_component(resultset) contains [$_tool xml object]]
    373               && ![string equal $_control "manual-resim"]} {
    374             # not needed -- show results and return
    375             $itk_component(notebook) current analyze
    376             return
    377         }
    378         set args ""
     370        # check to see if simulation is really needed
     371        $_tool sync
     372        if {[$itk_component(resultset) contains [$_tool xml object]]
     373              && ![string equal $_control "manual-resim"]} {
     374            # not needed -- show results and return
     375            $itk_component(notebook) current analyze
     376            return
     377        }
     378        set args ""
    379379    }
    380380
     
    394394    # if the hold window is set, then put up a busy cursor
    395395    if {$itk_option(-holdwindow) != ""} {
    396         blt::busy hold $itk_option(-holdwindow)
    397         raise $itk_component(hull)
    398         update
     396        blt::busy hold $itk_option(-holdwindow)
     397        raise $itk_component(hull)
     398        update
    399399    }
    400400
     
    404404    # if job was aborted, then allow simulation again
    405405    if {$result == "ABORT"} {
    406         _simState on "Aborted"
     406        _simState on "Aborted"
    407407    }
    408408
    409409    # load results from run.xml into analyzer
    410410    if {$status == 0 && $result != "ABORT"} {
    411         set status [catch {load $result} result]
     411        set status [catch {load $result} result]
    412412    }
    413413
    414414    # back to normal
    415415    if {$itk_option(-holdwindow) != ""} {
    416         blt::busy release $itk_option(-holdwindow)
     416        blt::busy release $itk_option(-holdwindow)
    417417    }
    418418    $itk_component(abort) configure -state disabled
    419419
    420420    if {$status != 0} {
    421         $itk_component(runinfo) configure -state normal
    422         $itk_component(runinfo) delete 1.0 end
    423         $itk_component(runinfo) insert end "Problem launching job:\n\n" text
    424         _simOutput $result
    425         $itk_component(runinfo) configure -state disabled
    426         $itk_component(runinfo) see 1.0
    427 
    428         # Try to create a support ticket for this error.
    429         # It may be a real problem.
    430         if {[Rappture::bugreport::shouldReport for jobs]} {
    431             Rappture::bugreport::register "Problem launching job:\n\n$result\n== RAPPTURE INPUT ==\n[$_tool xml xml]"
    432         }
     421        $itk_component(runinfo) configure -state normal
     422        $itk_component(runinfo) delete 1.0 end
     423        $itk_component(runinfo) insert end "Problem launching job:\n\n" text
     424        _simOutput $result
     425        $itk_component(runinfo) configure -state disabled
     426        $itk_component(runinfo) see 1.0
     427
     428        # Try to create a support ticket for this error.
     429        # It may be a real problem.
     430        if {[Rappture::bugreport::shouldReport for jobs]} {
     431            Rappture::bugreport::register "Problem launching job:\n\n$result\n== RAPPTURE INPUT ==\n[$_tool xml xml]"
     432        }
    433433    } else {
    434         $itk_component(notebook) current analyze
     434        $itk_component(notebook) current analyze
    435435    }
    436436
     
    449449itcl::body Rappture::Analyzer::reset {{when -eventually}} {
    450450    if {$when == "-eventually"} {
    451         after cancel [list catch [itcl::code $this reset -now]]
    452         after idle [list catch [itcl::code $this reset -now]]
    453         return
     451        after cancel [list catch [itcl::code $this reset -now]]
     452        after idle [list catch [itcl::code $this reset -now]]
     453        return
    454454    }
    455455
     
    457457    $_tool sync
    458458    if {![$itk_component(resultset) contains [$_tool xml object]]
    459           || [string equal $_control "manual-resim"]} {
    460         # if control mode is "auto", then simulate right away
    461         if {[string match auto* $_control]} {
    462             # auto control -- don't need button
    463             pack forget $itk_interior.simol
    464 
    465             after cancel [itcl::code $this simulate]
    466             after idle [itcl::code $this simulate]
    467         } else {
    468             _simState on "new input parameters"
    469         }
     459          || [string equal $_control "manual-resim"]} {
     460        # if control mode is "auto", then simulate right away
     461        if {[string match auto* $_control]} {
     462            # auto control -- don't need button
     463            pack forget $itk_interior.simol
     464
     465            after cancel [itcl::code $this simulate]
     466            after idle [itcl::code $this simulate]
     467        } else {
     468            _simState on "new input parameters"
     469        }
    470470    } else {
    471         _simState off
     471        _simState off
    472472    }
    473473}
     
    482482    # only show the last result? then clear first
    483483    if {[$_tool xml get tool.analyzer] == "last"} {
    484         clear
     484        clear
    485485    }
    486486
     
    488488    # each run.xml is loaded as a previous simulation.
    489489    foreach item [$xmlobj children -type run output.load] {
    490         set loadfile [$xmlobj get output.load.$item]
    491         set loadobj [Rappture::library $loadfile]
    492         load $loadobj
     490        set loadfile [$xmlobj get output.load.$item]
     491        set loadobj [Rappture::library $loadfile]
     492        load $loadobj
    493493    }
    494494
    495495    foreach item [$xmlobj children -type run output.include] {
    496         set id [$xmlobj element -as id output.include.$item]
    497         set inclfile [$xmlobj get output.include.$item]
    498         set inclobj [Rappture::library $inclfile]
    499         foreach c [$inclobj children output] {
    500             switch -glob -- $c {
    501                 # we don't want to include these tags
    502                 include* - time* - status* - user* {
    503                     continue
    504                 }
    505                 default {
    506                     set oldid [$inclobj element -as id output.$c]
    507                     set oldtype [$inclobj element -as type output.$c]
    508                     set newcomp "$oldtype\($id-$oldid\)"
    509                     $xmlobj copy output.$newcomp from $inclobj output.$c
    510                 }
    511             }
    512         }
     496        set id [$xmlobj element -as id output.include.$item]
     497        set inclfile [$xmlobj get output.include.$item]
     498        set inclobj [Rappture::library $inclfile]
     499        foreach c [$inclobj children output] {
     500            switch -glob -- $c {
     501                # we don't want to include these tags
     502                include* - time* - status* - user* {
     503                    continue
     504                }
     505                default {
     506                    set oldid [$inclobj element -as id output.$c]
     507                    set oldtype [$inclobj element -as type output.$c]
     508                    set newcomp "$oldtype\($id-$oldid\)"
     509                    $xmlobj copy output.$newcomp from $inclobj output.$c
     510                }
     511            }
     512        }
    513513    }
    514514
     
    518518    set haveresults 0
    519519    foreach item [_reorder [$xmlobj children output]] {
    520         switch -glob -- $item {
    521             log* {
    522                 _autoLabel $xmlobj output.$item "Output Log" counters
    523             }
    524             number* {
    525                 _autoLabel $xmlobj output.$item "Number" counters
    526             }
    527             integer* {
    528                 _autoLabel $xmlobj output.$item "Integer" counters
    529             }
    530             string* {
    531                 _autoLabel $xmlobj output.$item "String" counters
    532             }
    533             histogram* - curve* - field* {
    534                 _autoLabel $xmlobj output.$item "Plot" counters
    535             }
    536             structure* {
    537                 _autoLabel $xmlobj output.$item "Structure" counters
    538             }
    539             table* {
    540                 _autoLabel $xmlobj output.$item "Energy Levels" counters
    541             }
    542             sequence* {
    543                 _autoLabel $xmlobj output.$item "Sequence" counters
    544             }
    545         }
    546         set label [$xmlobj get output.$item.about.group]
    547         if {"" == $label} {
    548             set label [$xmlobj get output.$item.about.label]
    549         }
    550 
    551         set hidden [$xmlobj get output.$item.hide]
    552         set hidden [expr {"" != $hidden && $hidden}]
    553 
    554         if {"" != $label && !$hidden} {
    555             set haveresults 1
    556         }
     520        switch -glob -- $item {
     521            log* {
     522                _autoLabel $xmlobj output.$item "Output Log" counters
     523            }
     524            number* {
     525                _autoLabel $xmlobj output.$item "Number" counters
     526            }
     527            integer* {
     528                _autoLabel $xmlobj output.$item "Integer" counters
     529            }
     530            string* {
     531                _autoLabel $xmlobj output.$item "String" counters
     532            }
     533            histogram* - curve* - field* {
     534                _autoLabel $xmlobj output.$item "Plot" counters
     535            }
     536            structure* {
     537                _autoLabel $xmlobj output.$item "Structure" counters
     538            }
     539            table* {
     540                _autoLabel $xmlobj output.$item "Energy Levels" counters
     541            }
     542            sequence* {
     543                _autoLabel $xmlobj output.$item "Sequence" counters
     544            }
     545        }
     546        set label [$xmlobj get output.$item.about.group]
     547        if {"" == $label} {
     548            set label [$xmlobj get output.$item.about.label]
     549        }
     550
     551        set hidden [$xmlobj get output.$item.hide]
     552        set hidden [expr {"" != $hidden && $hidden}]
     553
     554        if {"" != $label && !$hidden} {
     555            set haveresults 1
     556        }
    557557    }
    558558
    559559    # if there are any valid results, add them to the resultset
    560560    if {$haveresults} {
    561         set index [$itk_component(resultset) add $xmlobj]
    562 
    563         # add each result to a result viewer
    564         foreach item [_reorder [$xmlobj children output]] {
    565             set label [$xmlobj get output.$item.about.group]
    566             if {"" == $label} {
    567                 set label [$xmlobj get output.$item.about.label]
    568             }
    569 
    570             set hidden [$xmlobj get output.$item.hide]
    571             set hidden [expr {"" != $hidden && $hidden}]
    572 
    573             if {"" != $label && !$hidden} {
    574                 if {![info exists _label2page($label)]} {
    575                     set name "page[incr _pages]"
    576                     set page [$itk_component(resultpages) insert end $name]
    577                     set _label2page($label) $page
    578                     set _label2desc($label) \
    579                         [$xmlobj get output.$item.about.description]
    580                     Rappture::ResultViewer $page.rviewer
    581                     pack $page.rviewer -expand yes -fill both -pady 4
    582 
    583                     set end [$itk_component(resultselector) \
    584                         choices index -value ---]
    585                     if {$end < 0} {
    586                         set end "end"
    587                     }
    588                     $itk_component(resultselector) choices insert $end \
    589                         $name $label
    590                 }
    591 
    592                 # add/replace the latest result into this viewer
    593                 set page $_label2page($label)
    594 
    595                 if {![info exists reset($page)]} {
    596                     $page.rviewer clear $index
    597                     set reset($page) 1
    598                 }
    599                 $page.rviewer add $index $xmlobj output.$item
    600             }
    601         }
     561        set index [$itk_component(resultset) add $xmlobj]
     562
     563        # add each result to a result viewer
     564        foreach item [_reorder [$xmlobj children output]] {
     565            set label [$xmlobj get output.$item.about.group]
     566            if {"" == $label} {
     567                set label [$xmlobj get output.$item.about.label]
     568            }
     569
     570            set hidden [$xmlobj get output.$item.hide]
     571            set hidden [expr {"" != $hidden && $hidden}]
     572
     573            if {"" != $label && !$hidden} {
     574                if {![info exists _label2page($label)]} {
     575                    set name "page[incr _pages]"
     576                    set page [$itk_component(resultpages) insert end $name]
     577                    set _label2page($label) $page
     578                    set _label2desc($label) \
     579                        [$xmlobj get output.$item.about.description]
     580                    Rappture::ResultViewer $page.rviewer
     581                    pack $page.rviewer -expand yes -fill both -pady 4
     582
     583                    set end [$itk_component(resultselector) \
     584                        choices index -value ---]
     585                    if {$end < 0} {
     586                        set end "end"
     587                    }
     588                    $itk_component(resultselector) choices insert $end \
     589                        $name $label
     590                }
     591
     592                # add/replace the latest result into this viewer
     593                set page $_label2page($label)
     594
     595                if {![info exists reset($page)]} {
     596                    $page.rviewer clear $index
     597                    set reset($page) 1
     598                }
     599                $page.rviewer add $index $xmlobj output.$item
     600            }
     601        }
    602602    }
    603603
     
    605605    set max [$itk_component(resultselector) choices size]
    606606    for {set i 0} {$i < $max} {incr i} {
    607         set first [$itk_component(resultselector) choices get -label $i]
    608         if {$first != ""} {
    609             set page [$itk_component(resultselector) choices get -value $i]
    610             set char [string index $page 0]
    611             if {$char != "@" && $char != "-"} {
    612                 $itk_component(resultpages) current $page
    613                 $itk_component(resultselector) value $first
    614                 set _lastlabel $first
    615                 break
    616             }
    617         }
     607        set first [$itk_component(resultselector) choices get -label $i]
     608        if {$first != ""} {
     609            set page [$itk_component(resultselector) choices get -value $i]
     610            set char [string index $page 0]
     611            if {$char != "@" && $char != "-"} {
     612                $itk_component(resultpages) current $page
     613                $itk_component(resultselector) value $first
     614                set _lastlabel $first
     615                break
     616            }
     617        }
    618618    }
    619619}
     
    626626itcl::body Rappture::Analyzer::clear {} {
    627627    foreach obj $_runs {
    628         itcl::delete object $obj
     628        itcl::delete object $obj
    629629    }
    630630    set _runs ""
     
    639639
    640640    foreach label [array names _label2page] {
    641         set page $_label2page($label)
    642         $page.rviewer clear
     641        set page $_label2page($label)
     642        $page.rviewer clear
    643643    }
    644644    $itk_component(resultselector) value ""
     
    650650    $itk_component(resultselector) choices insert end --- "---"
    651651    $itk_component(resultselector) choices insert end \
    652         @download [Rappture::filexfer::label download]
     652        @download [Rappture::filexfer::label download]
    653653    set _lastlabel ""
    654654
     
    680680
    681681    switch -- $option {
    682         coming {
    683             #
    684             # Warn result that a download is coming, in case
    685             # it needs to take a screen snap.
    686             #
    687             if {![regexp {^(|@download|---)$} $page]} {
    688                 set f [$itk_component(resultpages) page $page]
    689                 $f.rviewer download coming
    690             }
    691         }
    692         controls {
    693             # no controls for this download yet
    694             return ""
    695         }
    696         start {
    697             set widget $itk_component(download)
    698             if {[llength $args] > 0} {
    699                 set widget [lindex $args 0]
    700                 if {[catch {winfo class $widget}]} {
    701                     set widget $itk_component(download)
    702                 }
    703             }
    704             #
    705             # See if this download has any controls.  If so, then
    706             # post them now and let the user continue the download
    707             # after selecting a file format.
    708             #
    709             if {$page != ""} {
    710                 set ext ""
    711                 set f [$itk_component(resultpages) page $page]
    712                 set popup [$f.rviewer download controls \
    713                     [itcl::code $this download now $widget]]
    714 
    715                 if {"" != $popup} {
    716                     $popup activate $widget below
    717                 } else {
    718                     download now $widget
    719                 }
    720             } else {
    721                 # this shouldn't happen
    722                 set file error.html
    723                 set data "<h1>Not Found</h1>There is no result selected."
    724             }
    725         }
    726         now {
    727             set widget $itk_component(download)
    728             if {[llength $args] > 0} {
    729                 set widget [lindex $args 0]
    730                 if {[catch {winfo class $widget}]} {
    731                     set widget $itk_component(download)
    732                 }
    733             }
    734             #
    735             # Perform the actual download.
    736             #
    737             if {$page != ""} {
    738                 set ext ""
    739                 set f [$itk_component(resultpages) page $page]
    740                 foreach {ext data} [$f.rviewer download now] break
    741                 if {"" == $ext} {
    742                     if {"" != $widget} {
    743                         Rappture::Tooltip::cue $widget \
    744                             "Can't download this result."
    745                     }
    746                     return
    747                 }
    748                 regsub -all {[\ -\/\:-\@\{-\~]} $title {} title
    749                 set file "$title$ext"
    750             } else {
    751                 # this shouldn't happen
    752                 set file error.html
    753                 set data "<h1>Not Found</h1>There is no result selected."
    754             }
    755 
    756             set mesg [Rappture::filexfer::download $data $file]
    757             if {[string length $mesg] > 0} {
    758                 Rappture::Tooltip::cue $widget $mesg
    759             }
    760         }
    761         default {
    762             error "bad option \"$option\": should be coming, controls, now, start"
    763         }
     682        coming {
     683            #
     684            # Warn result that a download is coming, in case
     685            # it needs to take a screen snap.
     686            #
     687            if {![regexp {^(|@download|---)$} $page]} {
     688                set f [$itk_component(resultpages) page $page]
     689                $f.rviewer download coming
     690            }
     691        }
     692        controls {
     693            # no controls for this download yet
     694            return ""
     695        }
     696        start {
     697            set widget $itk_component(download)
     698            if {[llength $args] > 0} {
     699                set widget [lindex $args 0]
     700                if {[catch {winfo class $widget}]} {
     701                    set widget $itk_component(download)
     702                }
     703            }
     704            #
     705            # See if this download has any controls.  If so, then
     706            # post them now and let the user continue the download
     707            # after selecting a file format.
     708            #
     709            if {$page != ""} {
     710                set ext ""
     711                set f [$itk_component(resultpages) page $page]
     712                set popup [$f.rviewer download controls \
     713                    [itcl::code $this download now $widget]]
     714
     715                if {"" != $popup} {
     716                    $popup activate $widget below
     717                } else {
     718                    download now $widget
     719                }
     720            } else {
     721                # this shouldn't happen
     722                set file error.html
     723                set data "<h1>Not Found</h1>There is no result selected."
     724            }
     725        }
     726        now {
     727            set widget $itk_component(download)
     728            if {[llength $args] > 0} {
     729                set widget [lindex $args 0]
     730                if {[catch {winfo class $widget}]} {
     731                    set widget $itk_component(download)
     732                }
     733            }
     734            #
     735            # Perform the actual download.
     736            #
     737            if {$page != ""} {
     738                set ext ""
     739                set f [$itk_component(resultpages) page $page]
     740                foreach {ext data} [$f.rviewer download now] break
     741                if {"" == $ext} {
     742                    if {"" != $widget} {
     743                        Rappture::Tooltip::cue $widget \
     744                            "Can't download this result."
     745                    }
     746                    return
     747                }
     748                regsub -all {[\ -\/\:-\@\{-\~]} $title {} title
     749                set file "$title$ext"
     750            } else {
     751                # this shouldn't happen
     752                set file error.html
     753                set data "<h1>Not Found</h1>There is no result selected."
     754            }
     755
     756            set mesg [Rappture::filexfer::download $data $file]
     757            if {[string length $mesg] > 0} {
     758                Rappture::Tooltip::cue $widget $mesg
     759            }
     760        }
     761        default {
     762            error "bad option \"$option\": should be coming, controls, now, start"
     763        }
    764764    }
    765765}
     
    778778    set page [$itk_component(resultselector) translate $page]
    779779    if {"" != $page} {
    780         set f [$itk_component(resultpages) page $page]
    781         $f.rviewer plot clear
    782         foreach {index opts} $_plotlist {
    783             $f.rviewer plot add $index $opts
    784         }
     780        set f [$itk_component(resultpages) page $page]
     781        $f.rviewer plot clear
     782        foreach {index opts} $_plotlist {
     783            $f.rviewer plot add $index $opts
     784        }
    785785    }
    786786}
     
    797797    set max [llength $comps]
    798798    while {$i < $max} {
    799         set c [lindex $comps $i]
    800         if {[string match log* $c]} {
    801             set comps [lreplace $comps $i $i]
    802             lappend comps $c
    803             incr max -1
    804         } else {
    805             incr i
    806         }
     799        set c [lindex $comps $i]
     800        if {[string match log* $c]} {
     801            set comps [lreplace $comps $i $i]
     802            lappend comps $c
     803            incr max -1
     804        } else {
     805            incr i
     806        }
    807807    }
    808808    return $comps
     
    828828    set label [$xmlobj get $path.about.label]
    829829    if {"" == $label} {
    830         # no label -- make one up using the title specified
    831         if {![info exists counters($group-$title)]} {
    832             set counters($group-$title) 1
    833             set label $title
    834         } else {
    835             set label "$title (#[incr counters($group-$title)])"
    836         }
    837         $xmlobj put $path.about.label $label
     830        # no label -- make one up using the title specified
     831        if {![info exists counters($group-$title)]} {
     832            set counters($group-$title) 1
     833            set label $title
     834        } else {
     835            set label "$title (#[incr counters($group-$title)])"
     836        }
     837        $xmlobj put $path.about.label $label
    838838    } else {
    839         # handle the case of two identical labels in <output>
    840         if {![info exists counters($group-$label)]} {
    841             set counters($group-$label) 1
    842         } else {
    843             set label "$label (#[incr counters($group-$label)])"
    844             $xmlobj put $path.about.label $label
    845         }
     839        # handle the case of two identical labels in <output>
     840        if {![info exists counters($group-$label)]} {
     841            set counters($group-$label) 1
     842        } else {
     843            set label "$label (#[incr counters($group-$label)])"
     844            $xmlobj put $path.about.label $label
     845        }
    846846    }
    847847    return $label
     
    858858    set page ""
    859859    if {"" != $name} {
    860         set page [$itk_component(resultselector) translate $name]
     860        set page [$itk_component(resultselector) translate $name]
    861861    }
    862862    if {$page == "@download"} {
    863         # put the combobox back to its last value
    864         $itk_component(resultselector) component entry configure -state normal
    865         $itk_component(resultselector) component entry delete 0 end
    866         $itk_component(resultselector) component entry insert end $_lastlabel
    867         $itk_component(resultselector) component entry configure -state disabled
    868         # perform the actual download
    869         download start $itk_component(resultselector)
     863        # put the combobox back to its last value
     864        $itk_component(resultselector) component entry configure -state normal
     865        $itk_component(resultselector) component entry delete 0 end
     866        $itk_component(resultselector) component entry insert end $_lastlabel
     867        $itk_component(resultselector) component entry configure -state disabled
     868        # perform the actual download
     869        download start $itk_component(resultselector)
    870870    } elseif {$page == "---"} {
    871         # put the combobox back to its last value
    872         $itk_component(resultselector) component entry configure -state normal
    873         $itk_component(resultselector) component entry delete 0 end
    874         $itk_component(resultselector) component entry insert end $_lastlabel
    875         $itk_component(resultselector) component entry configure -state disabled
     871        # put the combobox back to its last value
     872        $itk_component(resultselector) component entry configure -state normal
     873        $itk_component(resultselector) component entry delete 0 end
     874        $itk_component(resultselector) component entry insert end $_lastlabel
     875        $itk_component(resultselector) component entry configure -state disabled
    876876    } elseif {$page != ""} {
    877         set _lastlabel $name
    878         set win [winfo toplevel $itk_component(hull)]
    879         blt::busy hold $win; update idletasks
    880         $itk_component(resultpages) current $page
    881 
    882         set f [$itk_component(resultpages) page $page]
    883         $f.rviewer plot clear
    884         eval $f.rviewer plot add $_plotlist
    885         blt::busy release [winfo toplevel $itk_component(hull)]
     877        set _lastlabel $name
     878        set win [winfo toplevel $itk_component(hull)]
     879        blt::busy hold $win; update idletasks
     880        $itk_component(resultpages) current $page
     881
     882        set f [$itk_component(resultpages) page $page]
     883        $f.rviewer plot clear
     884        eval $f.rviewer plot add $_plotlist
     885        blt::busy release [winfo toplevel $itk_component(hull)]
    886886    }
    887887}
     
    901901
    902902    if {$frac < 0.4} {
    903         $itk_component(results) fraction end $frac
     903        $itk_component(results) fraction end $frac
    904904    }
    905905    _fixSimControl
     
    920920itcl::body Rappture::Analyzer::_simState {state args} {
    921921    if {$state} {
    922         $itk_interior.simol configure \
    923             -background $itk_option(-simcontrolactiveoutline)
    924         configure -simcontrolcolor $itk_option(-simcontrolactivebackground)
    925 
    926         $itk_component(abort) configure -state disabled
    927         $itk_component(simulate) configure -state normal \
    928             -command [itcl::code $this simulate]
    929 
    930         #
    931         # If there's a special message, then put it up next to the button.
    932         #
    933         set mesg [lindex $args 0]
    934         if {"" != $mesg} {
    935             $itk_component(simstatus) configure -state normal
    936             $itk_component(simstatus) delete 1.0 end
    937             $itk_component(simstatus) insert end $mesg
    938 
    939             #
    940             # If there are any settings, then install them in the
    941             # "Simulate" button.  Also, pop them up as a tooltip
    942             # for the message.
    943             #
    944             set settings [lindex $args 1]
    945             if {[llength $settings] > 0} {
    946                 $itk_component(simulate) configure \
    947                     -command [eval itcl::code $this simulate $settings]
    948 
    949                 set details ""
    950                 foreach {path val} $settings {
    951                     set str [$_tool xml get $path.about.label]
    952                     if {"" == $str} {
    953                         set str [$_tool xml element -as id $path]
    954                     }
    955                     append details "$str = $val\n"
    956                 }
    957                 set details [string trim $details]
    958 
    959                 Rappture::Tooltip::for $itk_component(simstatus) $details
    960                 $itk_component(simstatus) insert end " "
    961                 $itk_component(simstatus) insert end "(details...)" popup
    962             }
    963             $itk_component(simstatus) configure -state disabled
    964         }
     922        $itk_interior.simol configure \
     923            -background $itk_option(-simcontrolactiveoutline)
     924        configure -simcontrolcolor $itk_option(-simcontrolactivebackground)
     925
     926        $itk_component(abort) configure -state disabled
     927        $itk_component(simulate) configure -state normal \
     928            -command [itcl::code $this simulate]
     929
     930        #
     931        # If there's a special message, then put it up next to the button.
     932        #
     933        set mesg [lindex $args 0]
     934        if {"" != $mesg} {
     935            $itk_component(simstatus) configure -state normal
     936            $itk_component(simstatus) delete 1.0 end
     937            $itk_component(simstatus) insert end $mesg
     938
     939            #
     940            # If there are any settings, then install them in the
     941            # "Simulate" button.  Also, pop them up as a tooltip
     942            # for the message.
     943            #
     944            set settings [lindex $args 1]
     945            if {[llength $settings] > 0} {
     946                $itk_component(simulate) configure \
     947                    -command [eval itcl::code $this simulate $settings]
     948
     949                set details ""
     950                foreach {path val} $settings {
     951                    set str [$_tool xml get $path.about.label]
     952                    if {"" == $str} {
     953                        set str [$_tool xml element -as id $path]
     954                    }
     955                    append details "$str = $val\n"
     956                }
     957                set details [string trim $details]
     958
     959                Rappture::Tooltip::for $itk_component(simstatus) $details
     960                $itk_component(simstatus) insert end " "
     961                $itk_component(simstatus) insert end "(details...)" popup
     962            }
     963            $itk_component(simstatus) configure -state disabled
     964        }
    965965    } else {
    966         if {"" != $itk_option(-simcontrolbackground)} {
    967             set simcbg $itk_option(-simcontrolbackground)
    968         } else {
    969             set simcbg $itk_option(-background)
    970         }
    971         $itk_interior.simol configure \
    972             -background $itk_option(-simcontroloutline)
    973         configure -simcontrolcolor $simcbg
    974 
    975         $itk_component(simulate) configure -state disabled
    976         $itk_component(abort) configure -state normal
    977 
    978         $itk_component(simstatus) configure -state normal
    979         $itk_component(simstatus) delete 1.0 end
    980         set mesg [lindex $args 0]
    981         if {"" != $mesg} {
    982             $itk_component(simstatus) insert end $mesg
    983         }
    984         $itk_component(simstatus) configure -state disabled
     966        if {"" != $itk_option(-simcontrolbackground)} {
     967            set simcbg $itk_option(-simcontrolbackground)
     968        } else {
     969            set simcbg $itk_option(-background)
     970        }
     971        $itk_interior.simol configure \
     972            -background $itk_option(-simcontroloutline)
     973        configure -simcontrolcolor $simcbg
     974
     975        $itk_component(simulate) configure -state disabled
     976        $itk_component(abort) configure -state normal
     977
     978        $itk_component(simstatus) configure -state normal
     979        $itk_component(simstatus) delete 1.0 end
     980        set mesg [lindex $args 0]
     981        if {"" != $mesg} {
     982            $itk_component(simstatus) insert end $mesg
     983        }
     984        $itk_component(simstatus) configure -state disabled
    985985    }
    986986}
     
    10021002    #
    10031003    while {[regexp -indices \
    1004                {=RAPPTURE-PROGRESS=> *([-+]?[0-9]+) +([^\n]*)(\n|$)} $message \
    1005                 match percent mesg]} {
    1006 
    1007         foreach {i0 i1} $percent break
    1008         set percent [string range $message $i0 $i1]
    1009 
    1010         foreach {i0 i1} $mesg break
    1011         set mesg [string range $message $i0 $i1]
    1012 
    1013         pack $itk_component(progress) -fill x -padx 10 -pady 10
    1014         $itk_component(progress) settings -percent $percent -message $mesg
    1015 
    1016         foreach {i0 i1} $match break
    1017         set message [string replace $message $i0 $i1]
     1004               {=RAPPTURE-PROGRESS=> *([-+]?[0-9]+) +([^\n]*)(\n|$)} $message \
     1005                match percent mesg]} {
     1006
     1007        foreach {i0 i1} $percent break
     1008        set percent [string range $message $i0 $i1]
     1009
     1010        foreach {i0 i1} $mesg break
     1011        set mesg [string range $message $i0 $i1]
     1012
     1013        pack $itk_component(progress) -fill x -padx 10 -pady 10
     1014        $itk_component(progress) settings -percent $percent -message $mesg
     1015
     1016        foreach {i0 i1} $match break
     1017        set message [string replace $message $i0 $i1]
    10181018    }
    10191019
     
    10251025
    10261026    while {[regexp -indices \
    1027                {=RAPPTURE-([a-zA-Z]+)=>([^\n]*)(\n|$)} $message \
    1028                 match type mesg]} {
    1029 
    1030         foreach {i0 i1} $match break
    1031         set first [string range $message 0 [expr {$i0-1}]]
    1032         if {[string length $first] > 0} {
    1033             $itk_component(runinfo) insert end $first
    1034             $itk_component(runinfo) insert end \n
    1035         }
    1036 
    1037         foreach {t0 t1} $type break
    1038         set type [string range $message $t0 $t1]
    1039         foreach {m0 m1} $mesg break
    1040         set mesg [string range $message $m0 $m1]
    1041         if {[string length $mesg] > 0 && $type != "RUN"} {
    1042             $itk_component(runinfo) insert end $mesg $type
    1043             $itk_component(runinfo) insert end \n $type
    1044         }
    1045 
    1046         set message [string range $message [expr {$i1+1}] end]
     1027               {=RAPPTURE-([a-zA-Z]+)=>([^\n]*)(\n|$)} $message \
     1028                match type mesg]} {
     1029
     1030        foreach {i0 i1} $match break
     1031        set first [string range $message 0 [expr {$i0-1}]]
     1032        if {[string length $first] > 0} {
     1033            $itk_component(runinfo) insert end $first
     1034            $itk_component(runinfo) insert end \n
     1035        }
     1036
     1037        foreach {t0 t1} $type break
     1038        set type [string range $message $t0 $t1]
     1039        foreach {m0 m1} $mesg break
     1040        set mesg [string range $message $m0 $m1]
     1041        if {[string length $mesg] > 0 && $type != "RUN"} {
     1042            $itk_component(runinfo) insert end $mesg $type
     1043            $itk_component(runinfo) insert end \n $type
     1044        }
     1045
     1046        set message [string range $message [expr {$i1+1}] end]
    10471047    }
    10481048
    10491049    if {[string length $message] > 0} {
    1050         $itk_component(runinfo) insert end $message
    1051         if {[$itk_component(runinfo) get end-2char] != "\n"} {
    1052             $itk_component(runinfo) insert end "\n"
    1053         }
    1054         $itk_component(runinfo) see end
     1050        $itk_component(runinfo) insert end $message
     1051        if {[$itk_component(runinfo) get end-2char] != "\n"} {
     1052            $itk_component(runinfo) insert end "\n"
     1053        }
     1054        $itk_component(runinfo) see end
    10551055    }
    10561056    $itk_component(runinfo) configure -state disabled
     
    10701070    set name [$itk_component(resultselector) value]
    10711071    if {[info exists _label2desc($name)] &&
    1072         [string length $_label2desc($name)] > 0} {
    1073         append tip "$_label2desc($name)\n\n"
     1072        [string length $_label2desc($name)] > 0} {
     1073        append tip "$_label2desc($name)\n\n"
    10741074    }
    10751075    if {[array size _label2page] > 1} {
    1076         append tip "Use this control to display other output results."
     1076        append tip "Use this control to display other output results."
    10771077    }
    10781078    return $tip
     
    10881088itcl::body Rappture::Analyzer::_fixSimControl {} {
    10891089    switch -- $itk_option(-simcontrol) {
    1090         on {
    1091             pack $itk_interior.simol -fill x -before $itk_interior.nb
    1092         }
    1093         off {
    1094             pack forget $itk_interior.simol
    1095         }
    1096         auto {
    1097             #
    1098             # If we have two or more radiodials, then there is a
    1099             # chance of encountering a combination of parameters
    1100             # with no data, requiring simulation.
    1101             #
    1102             if {[$itk_component(resultset) size -controls] >= 2} {
    1103                 pack $itk_interior.simol -fill x -before $itk_interior.nb
    1104             } else {
    1105                 pack forget $itk_interior.simol
    1106             }
    1107         }
    1108         default {
    1109             error "bad value \"$itk_option(-simcontrol)\": should be on, off, auto"
    1110         }
     1090        on {
     1091            pack $itk_interior.simol -fill x -before $itk_interior.nb
     1092        }
     1093        off {
     1094            pack forget $itk_interior.simol
     1095        }
     1096        auto {
     1097            #
     1098            # If we have two or more radiodials, then there is a
     1099            # chance of encountering a combination of parameters
     1100            # with no data, requiring simulation.
     1101            #
     1102            if {[$itk_component(resultset) size -controls] >= 2} {
     1103                pack $itk_interior.simol -fill x -before $itk_interior.nb
     1104            } else {
     1105                pack forget $itk_interior.simol
     1106            }
     1107        }
     1108        default {
     1109            error "bad value \"$itk_option(-simcontrol)\": should be on, off, auto"
     1110        }
    11111111    }
    11121112}
     
    11191119itcl::body Rappture::Analyzer::_fixNotebook {} {
    11201120    switch -- $itk_option(-notebookpage) {
    1121         about {
    1122             $itk_component(notebook) current about
    1123         }
    1124         simulate {
    1125             $itk_component(notebook) current simulate
    1126         }
    1127         analyze {
    1128             $itk_component(notebook) current analyze
    1129         }
    1130         default {
    1131             error "bad value \"$itk_option(-notebookpage)\": should be about, simulate, analyze"
    1132         }
     1121        about {
     1122            $itk_component(notebook) current about
     1123        }
     1124        simulate {
     1125            $itk_component(notebook) current simulate
     1126        }
     1127        analyze {
     1128            $itk_component(notebook) current analyze
     1129        }
     1130        default {
     1131            error "bad value \"$itk_option(-notebookpage)\": should be about, simulate, analyze"
     1132        }
    11331133    }
    11341134}
Note: See TracChangeset for help on using the changeset viewer.