📄 projinfo.tcl
字号:
# PROJINFO.TCL - Setup procedures for implementing project-information # wizard page## Copyright 1999 Wind River Systems, Inc## modification history# --------------------# 03c,17may02,wmd Fix text formatting, grammatical problems.# 03b,05mar02,bwd Modified SETUP to be non-tornado centric# 03a,12jun01,j_w Modified for Tornado 2.2# 02l,15dec00,wmd Fix puntuation and typos.# 02k,31jul00,bwd Modified codes in projInfoGet to be more concise# 02j,31jan00,bwd Fixed error handling for test automation. Deleted redundant# codes. Replaced setupVals(cmdMode) with isGUImode# 02i,13jan00,bwd Fixed typo: "nextCallback" to "backCallback" in TEXT MODE# 02h,06jan00,bwd No test automation for command line SETUP# 02g,17dec99,clc change switch statement patterns# 02f,16dec99,clc edit default text mode values# 02e,09nov99,clc modify text mode# 02d,07nov99,clc edit text mode return to previous page# 02c,07nov99,clc edit text mode exit# 02b,01nov99,bwd Added sections for automatic setup# 02b,21oct99,clc add text mode# 02a,30Sep99,j_w Modified for T3# 01d,22jul99,j_w added text messages# 01c,24mar99,bjl turn off inf write to registry after queueExecute.# 01b,08feb99,wmd Need to validate that the number of licenses field is# numeric.# 01a,26jan99,tcy extracted from INSTW32.TCL.################################################################################ pageCreate(projectInfo) - prompts users for project information## This procedure will prompt user for project information such as project name# and number of Tornado seats## SYNOPSIS# .tS# pageCreate(projectInfo)# .tE## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc pageCreate(projectInfo) {} { global ctrlVals global setupVals global projLic global projName global projLicUsers global projInfoTempVar if { [isGUImode] } { set ctrlVals(volatileFrm) [list \ [list label -name message1 \ -title [strTableGet PROJECTINFO_MSG_1] \ -x 99 -y 10 -w 206 -h 35] \ [list label -name message2 \ -title [strTableGet PROJECTINFO_MSG_2] \ -x 99 -y 56 -w 75 -h 10] \ [list label -name message3 \ -title [strTableGet PROJECTINFO_MSG_3] \ -x 99 -y 80 -w 75 -h 10] \ [list label -name message4 \ -title [strTableGet PROJECTINFO_MSG_4] \ -x 99 -y 104 -w 99 -h 8] \ [list text -name WRSLicText -border -x 187 -y 56 -w 120 \ -h 13 -readonly ] \ [list text -name projNameText -border -x 187 -y 79 -w 120 \ -h 13 -callback \ {onTextChange projNameText projName}] \ [list text -name numUsersText -border -x 187 -y 102 -w 120 \ -h 13 -callback \ {onTextChange numUsersText numUsers}] \ ] set w [dlgFrmCreate [strTableGet PROJECTINFO_TITLE]] # initialize values in controls if they exist in the registry controlValuesSet $w.WRSLicText [projInfoGet WRSLic] #if automatic setup, use values from SETUP_ANS_FILE file #if not, use values from projInfoGet if {$ctrlVals(useInputScript)} { controlValuesSet $w.projNameText $setupVals(projName) controlValuesSet $w.numUsersText $setupVals(projLicUsers) } else { controlValuesSet $w.projNameText [projInfoGet projName] controlValuesSet $w.numUsersText [projInfoGet numUsers] } controlFocusSet $w.nextButt if {$projLic != "" && $projName != "" && $projLicUsers != "" } { controlValuesSet $w.WRSLicText $projLic controlValuesSet $w.projNameText $projName controlValuesSet $w.numUsersText $projLicUsers } # test automation if {$ctrlVals(useInputScript)} { autoSetupLog "Project Information page:" autoSetupLog "\tWRS License : [projInfoGet WRSLic]" autoSetupLog "\tProject Name : $setupVals(projName)" autoSetupLog "\t[getProdInfo name] seats: $setupVals(projLicUsers)" nextCallback } } else { # TEXT mode printPageTitle [strTableGet PROJECTINFO_TITLE] puts "[strTableGet PROJECTINFO_MSG_1_TEXT]\n" puts "[strTableGet PROJECTINFO_MSG_2]: [projInfoGet WRSLic]\n" # this temporary variable is used to return to the regist. page set projInfoTempVar 0 if { ![info exists setupVals(projName)] || ![info exists setupVals(numUsers)] } { set setupVals(projName) [projInfoGet projName] set setupVals(numUsers) [projInfoGet numUsers] } set question "projName" while {[string compare $question "done"] != 0} { switch $question { "projName" { # get project name set msg "Enter the [strTableGet PROJECTINFO_MSG_3]: \ \[$setupVals(projName)\]" set ret [prompt "$msg"] switch -regexp -- $ret { "^-$" { set projInfoTempVar 1 backCallback return 0 } "^$" { if { $setupVals(projName) != "" } { set question "seats" } } "[eE][xX][iI][tT]" { return 0 } default { set setupVals(projName) $ret set question "seats" } } } "seats" { # get registration key set msg "Enter the [strTableGet PROJECTINFO_MSG_4]: \ \[$setupVals(numUsers)\]" set ret [prompt "$msg"] switch -regexp -- $ret { "^-$" { set question "projName" } "^$" { if { $setupVals(numUsers) != "" } { set question done } } "[eE][xX][iI][tT]" { return 0 } default { if {[regexp {[^0-9]+} $ret var]} { puts [strTableGet PROJECTINFO_MSG_6] } else { set setupVals(numUsers) $ret set question "done" } } } } } } nextCallback return 0 } }############################################################################### pageProcess(projectInfo) - process inputs from projectInfo page## This procedure will process inputs from projectInfo page## SYNOPSIS# .tS# pageProcess(projectInfo)# .tE## PARAMETERS: N/A## RETURNS: 0 if procedure onProjLicRecordOK returns 0# 1 if procedure onProjLicRecordOK returns 1## ERRORS: N/A#proc pageProcess(projectInfo) {} { global infVals global setupVals global projInfoTempVar 1 set retVal 1 if { ![isGUImode] } { # TEXT MODE if { $projInfoTempVar == 1 } { # go back to registration page return [calcPage registration] } } set infVals(addProjectInfo) 1 set retVal [onProjLicRecordOK] set prod [string toupper [getProdInfo name]] searchAndProcessSection AddRegistry [cdFileNameGet [file join RESOURCE \ INF $prod.INF]] queueExecute set infVals(addProjectInfo) 0 return $retVal}############################################################################### projInfoGet - initialize licenseAgreement page## This procedure will initialize licenseAgreement page## SYNOPSIS# .tS# projInfoGet <info># .tE## PARAMETERS:# .IP <info> information needed for project. It can be one of the following:# WRSLic - WRS license number assigned to vendor# projName - project name# numUsers - numbers of registered users## RETURNS: registry value of requested info## ERRORS: N/A#proc projInfoGet {info} { global setupVals if {$info == "WRSLic"} { if {![catch {setupLicenseNumGet} lic]} { return $lic } } set root "" set sp "SOFTWARE\\$setupVals(WRS)" if {![catch {sysRegistryValueRead HKEY_LOCAL_MACHINE $sp "WRSLicense"} value]} { set root "HKEY_LOCAL_MACHINE" } elseif {![catch {sysRegistryValueRead HKEY_CURRENT_USER $sp "WRSLicense"} value]} { set root "HKEY_CURRENT_USER" } else { dbgputs "ERROR registry reading: $value" return "" } if {$root != ""} { switch -exact -- $info { WRSLic { if {![catch {sysRegistryValueRead \ $root $sp "WRSLicense"} value]} { return $value } else { return ""} } projName { if {![catch {sysRegistryValueRead \ $root $sp "projectName"} value]} { return $value } else { return ""} } numUsers { if {![catch {sysRegistryValueRead \ $root $sp "nLicensedUsers"} value]} { return $value } else { return ""} } } }}############################################################################### onProjLicRecordOK - process inputs from projectInfo page## This procedure is a helper which processes inputs ffrom projectInfo page## SYNOPSIS# .tS# onProjLicRecordOK# .tE## PARAMETERS: N/A## RETURNS: 0 if project information is not completely filled# 1 if project information is completely filled## ERRORS: N/A#proc onProjLicRecordOK {} { global setupVals global projLic global projName global projLicUsers global ctrlVals # query the user with the info he has entered if [catch {setupLicenseNumGet} error] { puts "Error: $error" } else { set projLic $error } set projName $setupVals(projName) set projLicUsers [string trim $setupVals(numUsers)] if { [isGUImode] } { if {$projLic == "" || $projName == "" || $projLicUsers == "" } { if { $ctrlVals(useInputScript) } { autoSetupLog "[strTableGet PROJECTINFO_MSG_5]" autoSetupLog "Application Exit\n" set setupVals(cancel) 1 applicationExit } else { messageBox -ok -exclamationicon \ [strTableGet PROJECTINFO_MSG_5] } return 0 } if { [regexp {[^0-9]+} $projLicUsers var]} { if { $ctrlVals(useInputScript) } { autoSetupLog "Error: invalid input for \"Number of [getProdInfo name] Seats\"" autoSetupLog "Application Exit\n" set setupVals(cancel) 1 applicationExit } else { messageBox -ok -exclamationicon \ [strTableGet PROJECTINFO_MSG_6] } return 0 } } # record the license record in the registry under "WIND RIVER SYSTEMS", # done in <$productName>.INF return 1}####################################################################### Dialog Text Messages######################################################################set strTable(PROJECTINFO_TITLE) "Project Information"set strTable(PROJECTINFO_MSG_1) \ "Please enter your project name and the number of licensed\ users on the project in the spaces below. The information\ can be found on the [getProdInfo name] Installation Keys form\ shipped with this product."set strTable(PROJECTINFO_MSG_1_TEXT) \ "Please enter your project name and the number of licensed\ users on the project. The information can be found on the\ [getProdInfo name] Installation Keys form shipped with this product."set strTable(PROJECTINFO_MSG_2) "WRS License Number"set strTable(PROJECTINFO_MSG_3) "Project Name"set strTable(PROJECTINFO_MSG_4) "Number of [getProdInfo name] Seats"set strTable(PROJECTINFO_MSG_5) \ "You have not completely entered your\ project information."set strTable(PROJECTINFO_MSG_6) \ "The value you entered for the \"Number of [getProdInfo name] Seats\"\ field is non-numeric, please re-enter it."
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -