Changeset 6082 for trunk/gui/scripts


Ignore:
Timestamp:
Feb 28, 2016, 11:44:21 PM (9 years ago)
Author:
ldelgass
Message:

Fixes for layer visibility

File:
1 edited

Legend:

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

    r6081 r6082  
    139139
    140140    private variable _dlist "";         # list of data objects
     141    private variable _hidden "";        # list of hidden data objects
    141142    private variable _obj2ovride;       # maps dataobj => style override
    142143    private variable _layers;           # Contains the names of all the
     
    682683        lappend _dlist $dataobj
    683684    }
     685    # Remove from hidden list
     686    set pos [lsearch -exact $_hidden $dataobj]
     687    if {$pos >= 0} {
     688        set _hidden [lreplace $_hidden $pos $pos]
     689    }
    684690    set _obj2ovride($dataobj-raise) $params(-raise)
    685691    $_dispatcher event -idle !rebuild
     
    707713        # Remove it from the dataobj list.
    708714        set _dlist [lreplace $_dlist $pos $pos]
     715        # Add to hidden list
     716        set pos [lsearch -exact $_hidden $dataobj]
     717        if {$pos < 0} {
     718            lappend _hidden $dataobj
     719        }
    709720        array unset _obj2ovride $dataobj-*
    710721        set changed 1
     
    745756                    lappend dlist $dataobj
    746757                }
     758            }
     759            return $dlist
     760        }
     761        "-hidden" {
     762            set dlist {}
     763            foreach dataobj $_hidden {
     764                if { [info commands $dataobj] != $dataobj } {
     765                    # dataobj was deleted, remove from list
     766                    set pos [lsearch -exact $_hidden $dataobj]
     767                    if {$pos >= 0} {
     768                        set _hidden [lreplace $_hidden $pos $pos]
     769                    }
     770                    continue
     771                }
     772                if { ![$dataobj isvalid] } {
     773                    continue
     774                }
     775                if { [info exists _obj2ovride($dataobj-raise)] } {
     776                    puts stderr "ERROR: object on hidden list is visible"
     777                }
     778                lappend dlist $dataobj
    747779            }
    748780            return $dlist
     
    12851317    set _first ""
    12861318    set haveTerrain 0
     1319    foreach dataobj [get -hidden] {
     1320        foreach layer [$dataobj layers] {
     1321            if { ![$dataobj getLayerProperty $layer shared] } {
     1322                set tag $dataobj-$layer
     1323                SendCmd "map layer visible 0 $tag"
     1324            }
     1325        }
     1326    }
    12871327    foreach dataobj [get -objects] {
    12881328        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
     
    12931333            array set info [$dataobj layer $layer]
    12941334            set tag $layer
     1335            if { !$info(shared) } {
     1336                set tag $dataobj-$layer
     1337            }
    12951338            if { ![info exists _layers($tag)] } {
    12961339                if { $_reportClientInfo }  {
     
    13081351                SetLayerStyle $dataobj $layer
    13091352            }
    1310             # FIXME: This is overriding all layers' initial visibility setting
    1311             if { [info exists _obj2ovride($dataobj-raise)] &&
    1312                  $_obj2ovride($dataobj-raise)} {
    1313                 SendCmd "map layer visible 1 $tag"
    1314                 set _visibility($tag) 1
     1353            # Don't change visibility of shared/base layers
     1354            if { !$info(shared) } {
     1355                # FIXME: This is overriding data layers' initial visibility
     1356                if { [info exists _obj2ovride($dataobj-raise)] } {
     1357                    SendCmd "map layer visible 1 $tag"
     1358                    set _visibility($tag) 1
     1359                } else {
     1360                    SendCmd "map layer visible 0 $tag"
     1361                    set _visibility($tag) 0
     1362                }
    13151363            }
    13161364            if {$info(type) == "elevation"} {
    13171365                set haveTerrain 1
     1366            }
     1367        }
     1368        # Search our layer list for data layers removed from map object
     1369        foreach tag [array names _layers -glob $dataobj-*] {
     1370            set layer [string range $tag [string length "$dataobj-"] end]
     1371            if {![$dataobj hasLayer $layer]} {
     1372                DebugTrace "Delete layer: tag: $tag layer: $layer"
     1373                SendCmd "map layer delete $tag"
     1374                array unset _layers $tag
     1375                array unset _opacity $tag
     1376                array unset _visibility $tag
    13181377            }
    13191378        }
     
    24362495    array set info [$dataobj layer $layer]
    24372496    set tag $layer
     2497    if { !$info(shared) } {
     2498        set tag $dataobj-$layer
     2499    }
    24382500    if { [info exists info(visible)] &&
    24392501         !$info(visible) } {
     
    24692531                }
    24702532                "colorramp" {
    2471                     set cmapName $tag
     2533                    set cmapName "[regsub -all {::} ${tag} {}]"
    24722534                    SendFiles $info(colorramp.url)
    24732535                    SendCmd [list colormap define $cmapName $info(colorramp.colormap)]
     
    28612923itcl::body Rappture::MapViewer::SetLayerOpacity { dataobj layer {value 100}} {
    28622924    set tag $layer
     2925    if {![$dataobj getLayerProperty $layer shared]} {
     2926        set tag $dataobj-$layer
     2927    }
    28632928    set val $_opacity($tag)
    28642929    set sval [expr { 0.01 * double($val) }]
     
    28682933itcl::body Rappture::MapViewer::SetLayerVisibility { dataobj layer } {
    28692934    set tag $layer
     2935    if {![$dataobj getLayerProperty $layer shared]} {
     2936        set tag $dataobj-$layer
     2937    }
    28702938    set bool $_visibility($tag)
    28712939    SendCmd "map layer visible $bool $tag"
     
    28902958            set tag $layer
    28912959            set ctlname $layer
     2960            if {!$info(shared)} {
     2961                set tag $dataobj-$layer
     2962                set ctlname "[regsub -all {::} ${tag} {}]"
     2963            }
    28922964            checkbutton $f.${ctlname}_visible \
    28932965                -text $info(label) \
     
    29062978                    }
    29072979                    itk_component add legend-$colormap-min {
    2908                         label $f.${layer}_legend-$colormap-min -text 0
     2980                        label $f.legend-$colormap-min -text 0
    29092981                    }
    29102982                    itk_component add legend-$colormap-max {
    2911                         label $f.${layer}_legend-$colormap-max -text 1
     2983                        label $f.legend-$colormap-max -text 1
    29122984                    }
    29132985                    itk_component add legend-$colormap {
    2914                         label $f.${layer}_legend-$colormap -image $_image(legend-$colormap)
    2915                     }
    2916                     blt::table $f $row,0 $f.${layer}_legend-$colormap-min -anchor w -pady 0
    2917                     blt::table $f $row,1 $f.${layer}_legend-$colormap-max -anchor e -pady 0
     2986                        label $f.legend-$colormap -image $_image(legend-$colormap)
     2987                    }
     2988                    blt::table $f $row,0 $f.legend-$colormap-min -anchor w -pady 0
     2989                    blt::table $f $row,1 $f.legend-$colormap-max -anchor e -pady 0
    29182990                    incr row
    2919                     blt::table $f $row,0 $f.${layer}_legend-$colormap -anchor w -pady 2 -cspan 2
     2991                    blt::table $f $row,0 $f.legend-$colormap -anchor w -pady 2 -cspan 2
    29202992                    incr row
    29212993                    RequestLegend $colormap 256 16
Note: See TracChangeset for help on using the changeset viewer.