- Timestamp:
- Nov 6, 2008, 5:29:40 PM (18 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- b9d4214
- Parents:
- 642ac37
- File:
-
- 1 edited
-
tolbase/lib/byswidget/bsersel/bsersel.tcl (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tolbase/lib/byswidget/bsersel/bsersel.tcl
r642ac37 r3e755e5 50 50 # alg(sDi,$mag,$dim,-typ,$sDi) - Tipo de la subdimension 51 51 # alg(sDi,$mag,$dim,-dex,$sDi) - Lista dependencias existenciales 52 # alg(sDi,$mag,$dim,-hie,$sDi) - Lista de valores jerárquicos 52 53 # alg(sDi,$mag,$dim,-dva,$sDi) - Lista dependencias de valor 53 54 # alg(sDi,$mag,$dim,TCL,<key>,$sDi) - Valor de clave TCL $-key … … 84 85 set data(project) [$self cget -project] 85 86 set data(iniEntry) [$self cget -inientry] 86 set data(alreadytriggering) 087 set data(alreadytriggering) 0 87 88 $self _readini 88 89 } … … 366 367 set max $max+1 367 368 } 368 set localtrig 0369 if { !$data(alreadytriggering) } {370 set data(alreadytriggering) 1371 set localtrig 1372 Tolcon_Trace "cargando --> $mag"373 . configure -cursor watch374 ::progressbar::Show [mc "loading"] 60 2375 ::progressbar::SetText [mc "Getting Values"]376 }369 set localtrig 0 370 if { !$data(alreadytriggering) } { 371 set data(alreadytriggering) 1 372 set localtrig 1 373 Tolcon_Trace "cargando --> $mag" 374 . configure -cursor watch 375 ::progressbar::Show [mc "loading"] 60 2 376 ::progressbar::SetText [mc "Getting Values"] 377 } 377 378 set iterador 0 378 379 379 380 variable alreadyTriggered 380 381 foreach dim [$self _getDim $mag] { 381 #::TolInspector::Busy382 #::TolInspector::Busy 382 383 set lstSubDim [$self _getSubDim $mag $dim] 383 384 foreach sDi $lstSubDim { … … 400 401 array unset alreadyTriggered 401 402 if { $localtrig } { 402 Tolcon_Trace "terminando --> $mag"403 set data(alreadytriggering) 0404 ::progressbar::Destroy405 . configure -cursor ""403 Tolcon_Trace "terminando --> $mag" 404 set data(alreadytriggering) 0 405 ::progressbar::Destroy 406 . configure -cursor "" 406 407 } 407 408 … … 551 552 "mul.dir" { $self _fillSubDimMulDir $mag $dim $sDi } 552 553 "mul.lib" { $self _fillSubDimMulInd $mag $dim $sDi 0} 553 "mul.ind" { $self _fillSubDimMulInd $mag $dim $sDi } 554 "uni.dat" { $self _fillSubDimDat $mag $dim $sDi 1} 555 "mul.dat" { $self _fillSubDimDat $mag $dim $sDi 0} 554 "mul.ind" { $self _fillSubDimMulInd $mag $dim $sDi } 555 "uni.dat" { $self _fillSubDimDat $mag $dim $sDi 1} 556 "mul.dat" { $self _fillSubDimDat $mag $dim $sDi 0} 557 "uni.hie" { $self _fillSubDimHie $mag $dim $sDi 1} 558 "mul.hie" { $self _fillSubDimHie $mag $dim $sDi 0} 556 559 } 557 560 #Tolcon_Trace "subDim: $mag $dim $sDi es de tipo $type" 558 561 } 559 562 563 564 #///////////////////////////////////////////////////////////////////////////// 565 method _findcode {idcoltab cod} { 566 # 567 # PURPOSE: Find a value in the column col of tview and returns its index 568 # PARAMETERS: 569 # idcoltab -> list of pairs id, cod 570 # val -> value to find 571 #///////////////////////////////////////////////////////////////////////////// 572 foreach pair $idcoltab { 573 if {[lindex $pair 1] eq $cod} { 574 return [lindex $pair 0] 575 } 576 } 577 return -1 578 } 579 #///////////////////////////////////////////////////////////////////////////// 580 method _fillSubDimHie {mag dim sDi trigger} { 581 # 582 # PURPOSE: Fills subdimension frame for a subdimension marked as hierarchical 583 # PARAMETERS: 584 # mag -> magnitud identifier 585 # dim -> dimension identifier 586 # sDi -> subdimension identifier 587 # trigger -> 0/1 trigger event for dependants? 588 # multisel -> 0/1 allows multiselection 589 #///////////////////////////////////////////////////////////////////////////// 590 591 set w $algwid($mag,$dim,$sDi) 592 set lstReg [$self _getSubDimValues $mag $dim $sDi] 593 set defval [$self _getSubDimDefValue $mag $dim $sDi] 594 595 set valCont 0 596 #if $multisel { set icosel 0 } else { set icosel 1 } 597 # -bonselcmd [list $self _trigger $mag $dim $sDi] \ 598 # Si no existe crearlo 599 if {![info exist ${selfns}::tmp($mag,$dim,$sDi)]} { 600 ScrolledWindow $w.sw${sDi} 601 if {$trigger} { 602 set tmp($mag,$dim,$sDi) [ btreeview $w.sw${sDi}.tv \ 603 -bonselcmd [list $self _trigger $mag $dim $sDi] \ 604 -btogglehier false \ 605 -height 150 -linewidth 2 -borderwidth 1 \ 606 -bmultiselect false -bicosel false ] 607 } else { 608 set tmp($mag,$dim,$sDi) [ btreeview $w.sw${sDi}.tv \ 609 -btogglehier false \ 610 -height 150 -linewidth 2 -borderwidth 1 \ 611 -bmultiselect true -bicosel true ] 612 } 613 614 $tmp($mag,$dim,$sDi) bColumnInsert end cod -hide true 615 616 617 $w.sw${sDi} setwidget $w.sw${sDi}.tv 618 grid $w.sw${sDi} -sticky news 619 #grid $w.sw${sDi}.tv -row 0 -column 0 -sticky new 620 621 grid columnconfigure $w 0 -weight 1 622 grid rowconfigure $w 0 -weight 1 623 } 624 # Insertar los valores 625 # Crear elementos nuevos 626 #set idx 0 627 $tmp($mag,$dim,$sDi) delete root 628 set alg(sDi,$mag,$dim,-hie,$sDi) "" 629 set plotted 0 630 set iteration -1 631 set regidx 0 632 set plottedreg "" 633 set numels [expr [llength $lstReg]-1 ] 634 635 while { ($plotted < $numels) && ($iteration < $numels) } { 636 set iteration [expr $iteration + 1] 637 638 foreach reg $lstReg { 639 set ide [lindex $reg 0] 640 set abr [lindex $reg 1] 641 set nom [lindex $reg 2] 642 set des [lindex $reg 3] 643 set par [lindex $reg 4] 644 set lev [lindex $reg 5] 645 if {$iteration eq 0} { lappend plottedreg 0 } 646 if { $abr eq $defval } { 647 set mark ON 648 } else { 649 set mark OFF 650 } 651 set isplotted [lindex $plottedreg $regidx] 652 653 # set cmd "Text WriteLn(\"Processing iteration $iteration regidx $regidx plotted $plotted plottedreg -> $plottedreg \");" 654 # ::tol::console eval $cmd 655 656 if { $isplotted eq 0 } { 657 set infCols [ list cod $abr ] 658 if {$par ne ""} { 659 set paridx [$self _findcode $alg(sDi,$mag,$dim,-hie,$sDi) $par] 660 if { $paridx >= 0 } { 661 set plottedreg [ lreplace $plottedreg $regidx $regidx 1 ] 662 set plotted [expr $plotted+1] 663 set idx [ $tmp($mag,$dim,$sDi) insertNode $paridx 0 $mark $abr $nom $infCols ] 664 } 665 } else { 666 set plottedreg [ lreplace $plottedreg $regidx $regidx 1 ] 667 set plotted [expr $plotted+1] 668 set idx [ $tmp($mag,$dim,$sDi) insertNode root 0 $mark $abr $nom $infCols ] 669 } 670 lappend alg(sDi,$mag,$dim,-hie,$sDi) [list $idx $abr] 671 } 672 set regidx [expr $regidx+1] 673 } 674 set regidx 0 675 } 676 } 677 560 678 #///////////////////////////////////////////////////////////////////////////// 561 679 method _fillSubDimDat {mag dim sDi trigger} { … … 576 694 577 695 if {[llength $lstReg]} { 578 foreach reg $lstReg {579 lappend lstRegMod [linsert [lrange $reg 1 end] end [lindex $reg 0]]580 set valCont [expr $valCont+1]581 if {$defval eq [lindex $reg 1]} {582 set defFound $valCont583 }584 }696 foreach reg $lstReg { 697 lappend lstRegMod [linsert [lrange $reg 1 end] end [lindex $reg 0]] 698 set valCont [expr $valCont+1] 699 if {$defval eq [lindex $reg 1]} { 700 set defFound $valCont 701 } 702 } 585 703 } else { 586 set lstRegMod ""704 set lstRegMod "" 587 705 } 588 706 # Si no existe crearlo 589 707 if {![info exist ${selfns}::tmp($mag,$dim,$sDi)]} { 590 label $w.l${sDi} -text [mc $sDi]591 if {$trigger} {592 set tmp($mag,$dim,$sDi) [ bentrydate $w.bsf${sDi} \593 -postcommand [list $self _trigger $mag $dim $sDi] ]594 } else {595 set tmp($mag,$dim,$sDi) [bentrydate $w.bsf${sDi} ]596 }597 598 599 grid $w.l${sDi} -row 0 -column 0 -sticky ne600 grid $w.bsf${sDi} -row 0 -column 1 -sticky new708 label $w.l${sDi} -text [mc $sDi] 709 if {$trigger} { 710 set tmp($mag,$dim,$sDi) [ bentrydate $w.bsf${sDi} \ 711 -postcommand [list $self _trigger $mag $dim $sDi] ] 712 } else { 713 set tmp($mag,$dim,$sDi) [bentrydate $w.bsf${sDi} ] 714 } 715 716 717 grid $w.l${sDi} -row 0 -column 0 -sticky ne 718 grid $w.bsf${sDi} -row 0 -column 1 -sticky new 601 719 602 grid columnconfigure $w 1 -weight 1603 grid rowconfigure $w 0 -weight 1720 grid columnconfigure $w 1 -weight 1 721 grid rowconfigure $w 0 -weight 1 604 722 } 605 723 puts $defval … … 608 726 609 727 # if {$defval ne ""} { 610 # if {$defFound eq 1} {611 # $tmp($mag,$dim,$sDi) selectIndex $defFound612 # }728 # if {$defFound eq 1} { 729 # $tmp($mag,$dim,$sDi) selectIndex $defFound 730 # } 613 731 # } 614 732 … … 646 764 # Crear elementos nuevos 647 765 set idx 0 766 set defval [$self _getSubDimDefValue $mag $dim $sDi] 767 648 768 foreach reg $lstReg { 649 769 set ide [lindex $reg 0] … … 652 772 set des [lindex $reg 3] 653 773 set wid rb$abr 654 set defval [$self _getSubDimDefValue $mag $dim $sDi]655 774 radiobutton $w.$wid -text $nom -value $abr \ 656 775 -variable ${selfns}::tmp($mag,$dim,$sDi) … … 849 968 set localtrig 0 850 969 if { !$data(alreadytriggering) } { 851 set data(alreadytriggering) 1852 set localtrig 1853 . configure -cursor watch854 } 855 #Tolcon_Trace "********** Launching _trigger $mag $dim $sDi"856 970 set data(alreadytriggering) 1 971 set localtrig 1 972 . configure -cursor watch 973 } 974 #Tolcon_Trace "********** Launching _trigger $mag $dim $sDi" 975 857 976 set def [$self cget -def] 858 977 … … 863 982 } 864 983 if { $localtrig } { 865 set data(alreadytriggering) 0866 . configure -cursor ""867 }868 984 set data(alreadytriggering) 0 985 . configure -cursor "" 986 } 987 869 988 } 870 989 … … 942 1061 if [info exist ${selfns}::alg(sDi,$mag,$dim,TCL,-type,$sDi)] { 943 1062 set met [string tolower $alg(sDi,$mag,$dim,TCL,-type,$sDi)] 944 if { ($met ne " dir") && ($met ne "dat") && ($met ne "lib")} {1063 if { ($met ne "hie") && ($met ne "dir") && ($met ne "dat") && ($met ne "lib")} { 945 1064 set met "ind" 946 1065 } … … 984 1103 foreach sDi [$self _getSubDim $mag $dim] { 985 1104 set sDiLst [$self _getSelSubDim $mag $dim $sDi] 986 set type [$self _getSubDimType $mag $dim $sDi]1105 set type [$self _getSubDimType $mag $dim $sDi] 987 1106 if {$res && ($alg(sDi,$mag,$dim,-req,$sDi) eq 1) && \ 988 ( $type ne "uni.dat" && $type ne "mul.dat" ) && ([llength $sDiLst] eq 0)} {1107 ( $type ne "uni.dat" && $type ne "mul.dat" ) && ([llength $sDiLst] eq 0)} { 989 1108 set msg [mc "Must fill subdimension %1\$s of dimension %2\$s" \ 990 1109 $alg(sDi,$mag,$dim,-nam,$sDi) $alg(Dim,$mag,-nam,$dim)] … … 1058 1177 set txt \ 1059 1178 "${spa}foreach $dim [list [$self _getSelDim $mag $dim]] { 1060 ${spa} lappend $var ${mag}_[ListToStr $lstDim $alg(TCL,-dimSep) {[lindex $} { 0]}]1179 ${spa} lappend $var ${mag}_[ListToStr $lstDim $alg(TCL,-dimSep) {[lindex $} { 0]}] 1061 1180 ${spa}}" 1062 1181 } else { … … 1104 1223 set txt \ 1105 1224 "${spa}foreach $sDi [list [$self _getSelSubDim $mag $dim $sDi]] { 1106 ${spa} lappend $var ${dimTxt}[ListToStr $lstSDi $alg(TCL,-sDiSep) {[lindex $} { 2]}]1225 ${spa} lappend $var ${dimTxt}[ListToStr $lstSDi $alg(TCL,-sDiSep) {[lindex $} { 2]}] 1107 1226 ${spa}}" 1108 1227 } else { … … 1129 1248 set lst "" 1130 1249 set type [$self _getSubDimType $mag $dim $sDi] 1131 #TODO: Validate here 1132 switch -- $type { 1133 "uni.dat" { 1134 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1135 if {$tmp($mag,$dim,$sDi) ne ""} { 1136 if {[ $tmp($mag,$dim,$sDi) cget -btext ] ne ""} { 1137 set lst [ join [ $tmp($mag,$dim,$sDi) cget -btext ] ] 1138 } else { 1139 set lst "00000000" 1140 } 1141 } 1142 } 1143 } 1144 "mul.dat" { 1145 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1146 if {$tmp($mag,$dim,$sDi) ne ""} { 1147 if {[ $tmp($mag,$dim,$sDi) cget -btext ] ne ""} { 1148 set lst [ join [ $tmp($mag,$dim,$sDi) cget -btext ] ] 1149 } else { 1150 set lst "00000000" 1151 } 1152 } 1153 } 1154 } 1155 "uni.dir" { 1156 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1157 if {$tmp($mag,$dim,$sDi) ne ""} { 1158 set lst [list $tmp($mag,$dim,$sDi)] 1159 } 1160 } 1161 } 1162 "uni.ind" { 1250 #TODO: Validate here 1251 switch -- $type { 1252 "uni.hie" { 1253 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1254 if {$tmp($mag,$dim,$sDi) ne ""} { 1255 if {[ $tmp($mag,$dim,$sDi) getSelected ] ne ""} { 1256 set lst [ join [ $tmp($mag,$dim,$sDi) getSelected cod ] ] 1257 } else { 1258 set lst "" 1259 } 1260 } 1261 } 1262 } 1263 "mul.hie" { 1264 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1265 if {$tmp($mag,$dim,$sDi) ne ""} { 1266 if {[ $tmp($mag,$dim,$sDi) getSelected ] ne ""} { 1267 set lst [ join [ $tmp($mag,$dim,$sDi) getSelected cod ] ] 1268 } else { 1269 set lst "" 1270 } 1271 } 1272 } 1273 } 1274 "uni.dat" { 1275 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1276 if {$tmp($mag,$dim,$sDi) ne ""} { 1277 if {[ $tmp($mag,$dim,$sDi) cget -btext ] ne ""} { 1278 set lst [ join [ $tmp($mag,$dim,$sDi) cget -btext ] ] 1279 } else { 1280 set lst "00000000" 1281 } 1282 } 1283 } 1284 } 1285 "mul.dat" { 1286 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1287 if {$tmp($mag,$dim,$sDi) ne ""} { 1288 if {[ $tmp($mag,$dim,$sDi) cget -btext ] ne ""} { 1289 set lst [ join [ $tmp($mag,$dim,$sDi) cget -btext ] ] 1290 } else { 1291 set lst "00000000" 1292 } 1293 } 1294 } 1295 } 1296 "uni.dir" { 1297 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)] } { 1298 if {$tmp($mag,$dim,$sDi) ne ""} { 1299 set lst [list $tmp($mag,$dim,$sDi)] 1300 } 1301 } 1302 } 1303 "uni.ind" { 1163 1304 if {[info exist ${selfns}::tmp($mag,$dim,$sDi)]} { 1164 1305 set val [lindex [$tmp($mag,$dim,$sDi) key get] 0]
Note: See TracChangeset
for help on using the changeset viewer.
