⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compslct.tcl

📁 这是vxworks 的图形界面开发软件windML2.0和另一个CP2可以构成完整的界面开发。
💻 TCL
📖 第 1 页 / 共 4 页
字号:
                set tornadoSelected [isTornadoSelected [lindex $torObj 0]]
                set torIndex [lindex $torObj 0]
                set torArch [lindex $torObj 1]
                if {$setupVals(drvIndex) != -1 && $tornadoSelected && \
                    [expr $currProdIndex == $torIndex || \
                     $savedProdIndex == $torIndex] } {
                   foreach  drvObj $setupVals(drvIndex) {
                        set index [lindex $drvObj 0]
                        set arch [lindex $drvObj 1]
                        set drvObjSelected [productInfoGet instFlag $index]
                        if {!$drvObjSelected && $torArch == $arch} {
                            messageBox [strTableGet 5010_DRIVERS_INFO] \
                                -informationicon
                            productInfoSet instFlag $index 1
                            productGuiSizeUpdate 1
                            productInfoSet stateCommit $index
                            productInfoSet childStateCommit $index
                            set guiIndex [guiMapCtrlIndexGet $index]
                            controlItemPropertySet \
                                $ctrlVals(mainWindow).optionList \
                                -index $guiIndex -checkstate 1
                            set drvObjRestored 1
                            break
                        }
                    }
                }
                if {$drvObjRestored} {
                    break
                }
            }
        }
    }
}

#############################################################################
#
# guiMapCtrlIndexGet - return the GUI index of the selected product index
#
# This procedure will return the GUI index of the selected product index
#
# SYNOPSIS
# .tS
# guiMapCtrlIndexGet <prodIndex>
# .tE
#
# PARAMETERS:
# .IP prodIndex
# product index
#
# RETURNS: GUI mapped index of the product index
#
# ERRORS: N/A
#

proc guiMapCtrlIndexGet {prodIndex} {
    global objGuiMap ctrlVals

    set retVal $objGuiMap(prod2gui,$prodIndex)
    return $retVal
}

#############################################################################
#
# productGuiChkLstCreate - create the check list of products in compSelect page
#
# This procedure will create the check list of products in compSelect page
#
# SYNOPSIS
# .tS
# productGuiChkLstCreate
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc productGuiChkLstCreate {} {
    global objGuiMap
    global ctrlVals
    global setupVals
    global productObj

    # populate the list of check button.

    set i 0
    set chkList ""
    set totalSize 0

    catch {
        unset objGuiMap
    }

    foreach prodIndex [cdInfoGet productIndexList] {
        # test automation

        if { $ctrlVals(useInputScript) } {
            set desc [productInfoGet desc $prodIndex]
            if {[lsearch $setupVals(compList) "$desc"] < 0} {
                productInfoSet instFlag $prodIndex 0
            }
            foreach part [productInfoGet partIndexList $prodIndex] {
                set descp "[partInfoGet desc $part]"
                if [regexp WTX $descp] {
                    partInfoSet instFlag $part 1
                }
            }
        }
        set objGuiMap(gui2prod,$i) $prodIndex
        set objGuiMap(prod2gui,$prodIndex) $i
        set size [productInfoGet size $prodIndex]
        set formatMbSize [format "%7s MB" [byteToMbyte $size]]

        set desc " [productInfoGet desc $prodIndex]\t$formatMbSize "

        lappend chkList [list $desc [productInfoGet instFlag $prodIndex]]
        incr i
    }

    controlValuesSet $ctrlVals(mainWindow).optionList $chkList
    controlSelectionSet  $ctrlVals(mainWindow).optionList -noevent 0
    currSelProdIndexSet 0

    # use the tri-state checkbox 

    for {set ix 0} {$ix < $i} {incr ix} {
        set prodIndex $objGuiMap(gui2prod,$ix)
        set nCompSel 0
        set totComps 0
        foreach partIndex $productObj($prodIndex,partIndexList) {
            if {"[partInfoGet instFlag $partIndex]" == "1"} {
                incr nCompSel
            }
            incr totComps
        }

        if {[productInfoGet instFlag $prodIndex]} {
            if {$totComps != $nCompSel} {
                controlItemPropertySet $ctrlVals(mainWindow).optionList \
                    -index $objGuiMap(prod2gui,$prodIndex) -checkstate 2
            }
        }
    }

    # uncheck the products not meant for this host type

    set hostType [windHostTypeGet]
    for {set ix 0} {$ix < $i} {incr ix} {
        set prodIndex $objGuiMap(gui2prod,$ix)
        set desc [productInfoGet desc $prodIndex]
        set prodHostType [prodHostTypeGet $desc]
        if {$hostType != $prodHostType && $prodHostType != "unknown"} {
            productInfoSet instFlag $prodIndex 0
            controlItemPropertySet $ctrlVals(mainWindow).optionList \
                -index $ix -checkstate 0
        }
    }

    # test automation

    if { $ctrlVals(useInputScript) } {
        autoSetupLog "\tInstalled product(s):"

        # retrieve product name from the product list

        foreach i $chkList {
            autoSetupLog "\t  $i"
        }
    }

}

#############################################################################
#
# productGuiChkLstUpdate - update the check list of products in the compSelect
#                          page
#
# This procedure will update the check list of products in the compSelect page
#
# SYNOPSIS
# .tS
# productGuiChkLstUpdate <index>
# .tE
#
# PARAMETERS:
# .IP index
# product index
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc productGuiChkLstUpdate {index} {
    global objGuiMap
    global ctrlVals
    global productObj

    set prodIndex [currSelProdIndexGet]
    set size [productInfoGet size $prodIndex]
    set formatMbSize [format "%7s MB" [byteToMbyte $size]]

    # add in indication of components/product selected
    # remove this section if a UITcl tristate button list is created

    set nCompSel 0
    set totComps 0
    foreach partIndex $productObj($prodIndex,partIndexList) {
        if {"[partInfoGet instFlag $partIndex]" == "1"} {
            incr nCompSel
        }
        incr totComps
    }

    set desc " [productInfoGet desc $prodIndex]\t$formatMbSize "

    set chkButt [list [list "$desc" [productInfoGet instFlag $prodIndex]]]

    controlValuesSet $ctrlVals(mainWindow).optionList -insert $index $chkButt
    controlValuesSet $ctrlVals(mainWindow).optionList -delete [expr $index + 1]
    controlSelectionSet  $ctrlVals(mainWindow).optionList -noevent $index
    if {$totComps != $nCompSel} {
        if {[productInfoGet instFlag $prodIndex]} {
            set index $objGuiMap(prod2gui,$prodIndex)
            controlItemPropertySet $ctrlVals(mainWindow).optionList \
                        -index $index -checkstate 2
        }
    }        
}

#############################################################################
#
# productguisizeupdate - update the size of products in the compSelect page
#
# This procedure will update the size of products in the compSelect page
#
# SYNOPSIS
# .tS
# productGuiSizeUpdate [state]
# .tE
#
# PARAMETERS:
# .IP state
# init -- first time the sizes of products are updated
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc productGuiSizeUpdate {{state "init"}} {
    global ctrlVals
    global setupVals

    uiEventProcess


    set setupVals(availDiskSpace) "Unknown"
    if {[isUnix]} {
        set free [fspace [destDirGet]]
        if [regexp {^[0-9]+$} $free] {
            set setupVals(availDiskSpace) \
                [format "%3.1f" [expr $free / 1024.0]]
        }
    } else {
        if {![catch {setupDiskSpaceGet [destDirGet]} diskSpace] &&
             $diskSpace >= 0} {
             set setupVals(availDiskSpace) [kbyteToMbyte $diskSpace]
        }
    }

    set setupVals(reqDiskSpace) [cdInfoGet size]

    # add size of SETUP directory to total required space only if SETUP 
    # directory is not present in destination directory

    if [file exists [file join [destDirGet] SETUP RESOURCE TCL INSTW32.TCL]] {
        set totalSize [byteToMbyte $setupVals(reqDiskSpace)]
    } else {
        set totalSize [expr [setupSizeGet] + \
                            [byteToMbyte $setupVals(reqDiskSpace)]]
    }

    detailShow

    controlValuesSet $ctrlVals(mainWindow).reqSpace \
                     [format "%7s MB" $totalSize]
    controlValuesSet $ctrlVals(mainWindow).availSpace \
                     [format "%7s MB" $setupVals(availDiskSpace)]
}

#############################################################################
#
# checkProductDependency - check to see if dependencies are OK
#
# This is a callback procedure for the partList Dialog.  It will check to
# see if any dependencies are violated.  If so warn the user and correct
# them.  The only one is the driver/objects dependency on Tornado parts.
#
# SYNOPSIS
# .tS
# checkProductDependency
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc checkProductDependency {} {
    global ctrlVals
    global setupVals

    set prodIndex [currSelProdIndexGet]

    if {"$prodIndex" != ""} {

        # check to see if the current product is the Tornado product
        # determine if customer is trying to uncheck a driverObject/Header prod

        set drvObjRestored 0
        if {[info exists setupVals(tornadoIndex)]} {
            foreach torObj $setupVals(tornadoIndex) {
                set tornadoSelected [isTornadoSelected [lindex $torObj 0]]
                set torIndex [lindex $torObj 0]
                set torArch [lindex $torObj 1]
                if {$setupVals(drvIndex) != -1 && $tornadoSelected && \
                    [expr [currSelProdIndexGet] == $torIndex]} {
                   foreach  drvObj $setupVals(drvIndex) {
                        set index [lindex $drvObj 0]
                        set arch [lindex $drvObj 1]
                        set drvObjSelected [productInfoGet instFlag $index]
                        if {!$drvObjSelected && $torArch == $arch} {
                            messageBox [strTableGet 5010_DRIVERS_INFO] \
                                -informationicon
                            productInfoSet instFlag $index 1
                            productGuiSizeUpdate 1
                            productInfoSet stateCommit $index
                            productInfoSet childStateCommit $index
                            set guiIndex [guiMapCtrlIndexGet $index]
                            controlItemPropertySet \
                                $ctrlVals(mainWindow).optionList \
                                -index $guiIndex -checkstate 1
                            set drvObjRestored 1
                            break
                        }
                    }
                }
                if {$drvObjRestored} {
                    break
                }
            }
        }
    }
}

#############################################################################
#
# isTornadoSelected - checks to see if the tornado product is selected
#
# This procedure checks to see if the tornado product is selected by the
# customer.  If the parts "Tornado Integrated Simulator" and|or
# "Tornado Object" are selected, then 1 is returned, else 0 is returned.
#
# SYNOPSIS
# .tS
# isTornadoSelected <prodIndex>
# .tE
#
# PARAMETERS: prodIndex - the product index of the Tornado product
#
# RETURNS: 1 if either the simulator or tornado objects are selected
#          0 otherwise
#
# ERRORS: N/A
#

proc isTornadoSelected {prodIndex} {

    set retVal 0

    # first check to see if the tornado product has been selected

    if {[productInfoGet instFlag $prodIndex]} {
        foreach part [productInfoGet partIndexList $prodIndex] {
            set desc [partInfoGet desc $part]

            # check if the simulator part is selected

            if {[string first "Tornado Integrated Simulator" $desc] != -1} {
                if {[partInfoGet instFlag $part] == 1} {
                    return 1
                }
            }

            # check if the full simulator is selected

            if {[string first "Tornado Simulator:" $desc] != -1} {
                if {[partInfoGet instFlag $part] == 1} {
                    return 1
                }
            }

            # check if the Tornado part is selected

            if {[string first "Tornado Object" $desc] != -1} {
                if {[partInfoGet instFlag $part] == 1} {
                    return 1
                }
            }
        }
    }
    return $retVal
}

#############################################################################
#
# kbyteToMbyte - converts kilo bytes to mega bytes
#
# SYNOPSIS
# kbyteToMbyte <size>
#
# PARAMETERS:
#    <kbyte> : number in kilo bytes
#
# RETURNS: number in mega bytes
#
# ERRORS: N/A
#

proc kbyteToMbyte {size} {
    return [format "%3.1f" [expr $size / 1024.0]]
}

##############################################################################
#
# byteToMbyte - converts bytes to Mbytes
#
# SYNOPSIS
# byteToMbyte <size>
#
# PARAMETERS:
#    <byte> : number in bytes
#
# RETURNS: number in mega bytes
#
# ERRORS: N/A
#

proc byteToMbyte {size} {
    return [format "%3.1f" [expr $size / 1048576.0]]
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -