📄 compslct.tcl
字号:
# COMPSELCT.TCL - Setup procedures for implementing component-selection# wizard page## Copyright 1999 Wind River Systems, Inc## modification history# --------------------# 01t,21apr99,wmd Fix spr #26372 - Unselecting "non-native" products should# not display the warning message.# 01s,12apr99,wmd Need to make sure that "Tornado Simulator" product installs# the drivers product as well.# 01r,31mar99,wmd Add another name to check for arch wise: SIMHPPA.# 01q,25mar99,wmd Fix cpu identification for simulator products.# 01p,24mar99,wmd Try to fix so that x86-winXX products are recognized as# such.# 01o,22mar99,bjl remove compatibility page for Unix if tornado not # installed, added endWaitCursor.# 01n,19mar99,wmd Output to a file any debug messages.# 01m,18mar99,tcy added further checking for deselecting non-native products# 01m,17mar99,wmd Fix the width of the line to display "Grey box..."# completely.# 01l,11mar99,wmd Move the tristate checkbox before the code to uncheck# non-native hosts. Fix prodHostTypeGet.# 01k,11mar99,wmd For single part products, indicate 1/1 selected, and add# check to 'foreign' hosts into part select OK proc.# 01j,10mar99,wmd Use the tri-state check box for the selected products.# 01i,08mar99,tcy fixed bug with code filtering non-native hostnames# 01h,03mar99,tcy Show correct size SETUP/ takes based on platform# (fix for SPR 25228)# 01g,22feb99,wmd Fix so that unselected products show 0 out of XXX products.# 01f,17feb99,tcy Added proc installedProdDescGet() to return a list# of products (fix for SPR 24897) # fix bug in installedProdGet() when checking dest. directory# 01e,11feb99,wmd Remove the apostrophes around the '*' so that it is more# visible.# 01d,29jan99,wmd Fix spr #24559, show which products have components.# 01c,28jan99,wmd Fix spr # 24523, warn users of non-native installations,# and initially uncheck those products not meant for the host.# 01b,29jan99,tcy moved byteToMbyte() and kbyteToMbyte() from INSTALL.TCL# 01a,26jan99,tcy extracted from INSTW32.TCL.################################################################################ pageCreate(compSelect) - display products for users to install## This procedure will display products for users to install## SYNOPSIS# .tS# pageCreate(compSelect)# .tE## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc pageCreate(compSelect) {} { global ctrlVals global setupVals endWaitCursor set ctrlVals(volatileFrm) [list \ [list label -name msg \ -title [strTableGet 1140_COMP_SELECT]\ -x 100 -y 9 -w 205 -h 26] \ [list label -name message2 \ -title "&Products (Grey box indicates additional components selectable.)" \ -x 100 -y 37 -w 210 -h 8] \ [list checklist -name optionList \ -callback onClickProdCheckList \ -x 100 -y 46 -w 207 -h 80] \ [list label -name reqText \ -title "Space Required:" \ -x 107 -y 124 -w 55 -h 8] \ [list label -name reqSpace \ -title "Unknown" \ -x 257 -y 124 -w 43 -h 8] \ [list label -name availText \ -title "Space Available:" \ -x 107 -y 134 -w 55 -h 8] \ [list label -name availSpace \ -title "Unknown" \ -x 257 -y 134 -w 43 -h 8] \ [list frame -name frm1 \ -xpos 100 -ypos 148 -width 207 -height 25] \ [list label -name compSelected \ -x 107 -y 153 -w 140 -h 18] \ [list button -title "&Details..." -name partDetailButt \ -xpos 249 -ypos 153 -width 50 -height 14 \ -callback partListDlg] \ ] set w [dlgFrmCreate [strTableGet 1450_TITLE_OPTION]] productGuiChkLstCreate productGuiSizeUpdate # test automation if { $ctrlVals(useInputScript) } { autoSetupLog "Products Selection page:" autoSetupLog "\tInstalled products specified by the key" nextCallback }}############################################################################### preventInstallation - prevents users from continuing with installation## This procedure will invoke a dialog box to stop users from continuing# will installation## SYNOPSIS# .tS# preventInstallation <ver># .tE## PARAMETERS:# .IP ver# version of Tornado## RETURNS: N/A## ERRORS: N/A#proc preventInstallation {ver} { set message "You are attempting to install over an existing $ver\n\ tree. This is not recommended and will cause \ incompatibilities\n\ which will render the product unusable.\n\n\ Please push \"OK\" to choose a new installation path."\ dialog stop Setup $message}############################################################################### installedProdDescGet - return a list of installed product descriptions # that were installed irrespective of the pool Id## This procedure returns a list of installed product descriptions that were # installed irrespective of the pool Id## SYNOPSIS# .tS# installedProdDescGet <pool># .tE## PARAMETERS:## RETURNS: # The variable setupVals(instProdDescList) will be set after invoking# the procedure. The variable will be set to NULL if Setup does not detect any # products in the destination directory## ERRORS: N/A#proc installedProdDescGet {} { global setupVals # open the setup.log file and determine if there are any installed products # from the specified CD pool set logfile [file join [destDirGet] setup.log] if [catch {open $logfile r} logfd] { return "" } else { set text [split [read $logfd] \n] set nlines [llength $text] close $logfd for {set ix 0} {$ix < $nlines} {incr ix} { # iterate each line and search for the pool ID passed in set textLine [split [lindex $text $ix ]] # check to see if destination dir is same set instDir [lindex $textLine 3] # make sure case is not an issue when doing comparison if {[string tolower $instDir] == [string tolower [destDirGet]]} { incr ix # accumulate product numbers that are in this group set line [split [lindex $text $ix]] while {$ix < $nlines} { if {[string range [lindex $line 1] 0 3] == "100-"} { lappend prodDescList "[lrange $line 2 end]" } incr ix set line [split [lindex $text $ix]] if {[lsearch -regexp $line "TDK-"] == 1} { break } } } } } set setupVals(instProdDescList) $prodDescList dbgputs "Products installed: $setupVals(instProdDescList)"}############################################################################### installedProdGet - return a list of installed products that were installed# from the same pool## This procedure returns a list of installed products that were installed# from the same pool## SYNOPSIS# .tS# installedProdGet <pool># .tE## PARAMETERS:# .IP pool# pool ID in the form of TDK-XXXXX-XX-XX## RETURNS: N/A## ERRORS: N/A#proc installedProdGet {pool} { global setupVals set prodList "" set poolID [string range $pool 0 [expr [string first "ZC" $pool] -1]] if {$poolID == ""} { set poolID $pool } # open the setup.log file and determine if there are any installed products # from the specified CD pool set logfile [file join [destDirGet] setup.log] if [catch {open $logfile r} logfd] { return "" } else { set text [split [read $logfd] \n] set nlines [llength $text] close $logfd for {set ix 0} {$ix < $nlines} {incr ix} { # iterate each line and search for the pool ID passed in set textLine [split [lindex $text $ix ]] if {[lsearch $textLine $poolID*] != -1} { # check to see if destination dir is same set instDir [lindex $textLine 3] # make sure case is not an issue when doing comparison if {[string tolower $instDir] == \ [string tolower [destDirGet]]} { incr ix # accumulate product numbers that are in this group set line [split [lindex $text $ix]] while {$ix < $nlines} { if {[string range [lindex $line 1] 0 3] == "100-"} { lappend prodList [lindex $line 1] } incr ix set line [split [lindex $text $ix]] if {[lsearch -regexp $line "TDK-"] == 1} { break } } } } } } # make the list unique set prodList [lunique $prodList] set setupVals(instProdList) $prodList}############################################################################### lunique - return a new list with unique elements of the old list## This procedure will return a new list with unique elements of the old list## SYNOPSIS# .tS# lunique# .tE## PARAMETERS:# .IP oldList# a list of elements## RETURNS: a new list with unique elements of the old list## ERRORS: N/A#proc lunique {oldList} { set newList "" catch {unset arr} res foreach item $oldList { set arr($item) 1 } foreach indx [array name arr] { lappend newList $indx } return $newList}############################################################################### analyzeInstFiles - check if any selected products are already installed## This procedure will check if any selected products are already installed.## SYNOPSIS# .tS# analyzeInstFiles# .tE## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc analyzeInstFiles {} { global ctrlVals global setupVals windowTimerCallbackSet analyzing_setup_files 0 "" set setupVals(instProdList) "" set setupVals(dupCoreInstall) 0 set setupVals(duplicateProducts) "" beginWaitCursor # check and setup list of installed products if any installedProdGet $setupVals(CDnumber) foreach prodIndex [cdInfoGet selectedProdIndexList] { uiEventProcess # if there are installed products in the destDir if {$setupVals(instProdList) != ""} { set prodNum [productInfoGet number $prodIndex] if {[lsearch $setupVals(instProdList) $prodNum] != -1} { # check for existence of a core product in the selected list set productName [productInfoGet name $prodIndex] if {$productName == "tornado"} { set setupVals(dupCoreInstall) 1 } elseif {[productInfoGet coreProd $prodIndex] == "core"} { set setupVals(dupCoreInstall) 1 } lappend setupVals(duplicateProducts) \ [productInfoGet desc $prodIndex] } } } endWaitCursor windowClose analyzing_setup_files}############################################################################### checkForPreviouslyInstalledProds - create dialog box for checking whether# any selected products have been# previously installed## SYNOPSIS# .tS# checkForPreviouslyInstalledProds# .tE## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc checkForPreviouslyInstalledProds {} { global ctrlVals global setupVals set setupVals(coreInstallation) 0 dialogCreate \ -name analyzing_setup_files \ -notitle \ -parent $ctrlVals(parentDialog) \ -helpfile $setupVals(setupHelp) \ -width 200 -height 32 \ -init { controlPropertySet analyzing_setup_files.analyze_ctrl -bold 1; \ windowTimerCallbackSet analyzing_setup_files \ -milliseconds 200 analyzeInstFiles } \ -controls [list \ [list label -name "analyze_ctrl" -center \ -title [strTableGet 4020_ANALYZING_BANNER] \ -x 15 -y 12 -w 170 -h 10 ] ]}############################################################################### onDupProdContinue - set dupRetVal to 0 and close the duplicate product# dialog box## This procedure will set dupRetVal to 0 and close the duplicate product# dialog box## SYNOPSIS# .tS# onDupProdContinue# .tE## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc onDupProdContinue {} { global dupRetVal set dupRetVal 0 windowClose duplicate_products_warn}############################################################################### onDupProdSelComp - set dupRetVal to 1 and close the duplicate product# dialog box
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -