📄 autorun.tcl
字号:
################################################################################
# AutoRun.tcl - AutoRun for Tornado CD-ROM
#
# Copyright 1996 Wind River Systems, Inc.
#
# Globals
# The index of currently displayed bitmap
set nthPreviewBitmapShow 0
# List of bitmap names for the product currently being previewed
set previewBitmapList ""
# The number of bitmaps in the bitmap list for the current product
set nPreviewBitmaps 0
# The name of the product currently being previewed
set previewProductName ""
# The handle to the setupTclDll
set setup_lib ""
# The location to which files are unzipped
set tempDir ""
# List of all possible products that can be previewed, in format
# of autoRunInfo file
set previewProducts ""
# List of keys (corresponding to directory names) of products the
# user has chosen to preview
set previewKeyList ""
proc tornadoAutoRun@@Init {} {
upvar setup_lib setup_lib
set setup_lib [load [CDDriveGet]X86/WIN32/SETUPTCL.DLL]
controlCreate tornadoAutoRun@@ \
[list bitmap -x 8 -y 8 -name bitmap -hidden \
-title [CDDriveGet]RESOURCE/BITMAPS/TOR256.BMP]
controlCreate tornadoAutoRun@@ [list \
button -w 50 -height 16 -hidden -title "&Setup" -name setupButton \
-callback {
if {[catch {processCreate setup.exe} error]} {
messageBox $error
} {
tornadoAutoRun@@windowClose
}
}]
controlCreate tornadoAutoRun@@ [list \
button -w 50 -height 16 -hidden -title "&Preview" -name previewButton \
-callback tornadoAutoRun@@productSelect]
controlCreate tornadoAutoRun@@ [list \
button -w 50 -height 16 -hidden -title "&Read Me..." \
-name readmeButton \
-callback {
if [file exist [CDDriveGet]README.TXT] {
if {[catch [list processCreate \
"notepad.exe [CDDriveGet]README.TXT"] error]} {
messageBox $error
}
} {
messageBox -exclam "No README available at this time."
}
}]
controlCreate tornadoAutoRun@@ [list \
button -w 50 -height 16 -hidden -title "E&xit" -name exitButton \
-callback tornadoAutoRun@@windowClose]
welcomePageLayoutPrepare
}
proc welcomePageLayoutPrepare {} {
global previewProducts
# Retrieve the bitmaps width and height in dialog units.
set bitmapW [lindex [controlSizeGet tornadoAutoRun@@.bitmap] 0]
set bitmapH [lindex [controlSizeGet tornadoAutoRun@@.bitmap] 1]
# Resize the dialog now that we know the bitmaps size in dialog units.
windowSizeSet tornadoAutoRun@@ \
[expr 8 + $bitmapW + 8 + 50 + 8] [expr 8 + $bitmapH + 8]
windowTitleSet tornadoAutoRun@@ "Welcome to Tornado"
controlHide tornadoAutoRun@@.bitmap 0
controlPositionSet tornadoAutoRun@@.setupButton [expr 8 + $bitmapW + 8] 8
controlPositionSet tornadoAutoRun@@.previewButton [expr 8 + $bitmapW + 8] [expr 8 + 16 + 8]
controlPositionSet tornadoAutoRun@@.readmeButton [expr 8 + $bitmapW + 8] [expr 8 + 16 + 8 + 16 + 8]
controlPositionSet tornadoAutoRun@@.exitButton [expr 8 + $bitmapW + 8] [expr 8 + $bitmapH - 16]
controlHide tornadoAutoRun@@.setupButton 0
controlHide tornadoAutoRun@@.previewButton 0
controlHide tornadoAutoRun@@.exitButton 0
controlHide tornadoAutoRun@@.readmeButton 0
# Create list of products that can be previewed
if {$previewProducts == ""} {
set previewProducts [previewProductsEnumerate [archiveGet]]
}
# Disable preview button if there is nothing to preview
set nProducts [llength $previewProducts]
if {$nProducts == 0} {
controlEnable tornadoAutoRun@@.previewButton 0
}
# Disable the readme button if there isn't a readme file
if [file exist [CDDriveGet]README.TXT] {
controlEnable tornadoAutoRun@@.readmeButton 1
} else {
controlEnable tornadoAutoRun@@.readmeButton 0
}
}
proc previewPageLayoutPrepare {productKeyList} {
controlHide tornadoAutoRun@@.bitmap 1
controlHide tornadoAutoRun@@.previewButton 1
controlHide tornadoAutoRun@@.readmeButton 1
controlHide tornadoAutoRun@@.exitButton 1
global nPreviewBitmaps
global previewBitmapList
global previewProductName
global previewKeyList
# Setup the first preview
set archive [archiveGet]
set nPreviewBitmaps 0
set previewProductKey [lindex $productKeyList 0]
set previewKeyList [lrange $productKeyList 1 end]
set previewBitmapList \
[previewBitmapsEnumerate $previewProductKey $archive]
set nPreviewBitmaps [llength $previewBitmapList]
# Determine the name of the preview product and use it to update
# the window title; we grab the directory for the first bitmap
# and capitalize it
set previewProductName [lindex [lindex $previewBitmapList 0] 0]
if {[regexp {^([a-zA-Z])([^/]+)/[0-9]+\.[Bb][Mm][Pp]$} \
$previewProductName dummy first remainder]} {
set previewProductName \
[format "%s%s" [string toupper $first] $remainder]
}
tornadoAutoRun@@previewPageTitleSet
if {$previewBitmapList != ""} {
# Create a control to display the first bitmap
set firstBitmap [lindex $previewBitmapList 0]
if [catch {previewBitmapGet $firstBitmap $archive} errorMsg] {
return
}
set bitmapPath [tempDirGet]$firstBitmap
controlCreate tornadoAutoRun@@ \
[list bitmap -x 8 -y 8 -name previewBitmap -hidden \
-title $bitmapPath]
# Retrieve the bitmaps width and height in dialog units.
set previewBitmapW [lindex [controlSizeGet \
tornadoAutoRun@@.previewBitmap] 0]
set previewBitmapH [lindex [controlSizeGet \
tornadoAutoRun@@.previewBitmap] 1]
windowSizeSet tornadoAutoRun@@ \
[expr 8 + $previewBitmapW + 8] \
[expr 8 + $previewBitmapH + 8 + 16 + 8]
controlPositionSet tornadoAutoRun@@.setupButton 8 \
[expr 8 + $previewBitmapH + 8]
controlCreate tornadoAutoRun@@ [list \
button -w 50 -h 16 -name previousSlide -title "< &Back" \
-x [expr 8 + ($previewBitmapW / 2) - 54] \
-y [expr 8 + $previewBitmapH + 8] \
-callback {
nextPreviewSlide -1
}]
controlCreate tornadoAutoRun@@ [list \
button -w 50 -h 16 -name nextSlide -title "&Next >" \
-x [expr 8 + ($previewBitmapW / 2) + 4] \
-y [expr 8 + $previewBitmapH + 8] \
-callback {
nextPreviewSlide 1
}]
controlCreate tornadoAutoRun@@ [list \
button -w 50 -h 16 -name cancelPreview -title "Close" \
-x [expr 8 + $previewBitmapW - 50] \
-y [expr 8 + $previewBitmapH + 8] \
-callback {
nextPreviewSlide 999
}]
controlHide tornadoAutoRun@@.previewBitmap 0
controlHide tornadoAutoRun@@.cancelPreview 0
controlEnable tornadoAutoRun@@.previousSlide 0
}
}
proc nextPreviewSlide {direction} {
global nthPreviewBitmapShow
global nPreviewBitmaps
global previewBitmapList
global setup_lib
global previewProductName
global previewKeyList
# Remove the last bitmap displayed from disk
set lastPreviewBitmap \
[tempDirGet][lindex $previewBitmapList $nthPreviewBitmapShow]
file delete -force -- $lastPreviewBitmap
# Enable or disable the Next button
if {([expr $nthPreviewBitmapShow + $direction] == \
[expr $nPreviewBitmaps - 1]) && [llength $previewKeyList] == 0} {
controlEnable tornadoAutoRun@@.nextSlide 0
} else {
controlEnable tornadoAutoRun@@.nextSlide 1
}
# This should never happen
if {[expr $nthPreviewBitmapShow + $direction] < 0} return
incr nthPreviewBitmapShow $direction
if {$nthPreviewBitmapShow < $nPreviewBitmaps} {
# Enable/disable the back button
if {$nthPreviewBitmapShow > 0} {
controlEnable tornadoAutoRun@@.previousSlide 1
} else {
controlEnable tornadoAutoRun@@.previousSlide 0
}
# Transition to next slide in this preview
set nextPreviewBitmapFile \
[lindex $previewBitmapList $nthPreviewBitmapShow]
if {[previewBitmapGet $nextPreviewBitmapFile [archiveGet]]} {
controlValuesSet tornadoAutoRun@@.previewBitmap \
[tempDirGet]$nextPreviewBitmapFile
}
tornadoAutoRun@@previewPageTitleSet
} elseif {$nthPreviewBitmapShow == $nPreviewBitmaps && \
[llength $previewKeyList] != 0} {
# Disable Back button
controlEnable tornadoAutoRun@@.previousSlide 0
# Change the slideshow
set nPreviewBitmaps 0
set nthPreviewBitmapShow 0
set previewProductName [lindex $previewKeyList 0]
set previewKeyList [lrange $previewKeyList 1 end]
set previewBitmapList \
[previewBitmapsEnumerate $previewProductName [archiveGet]]
set nPreviewBitmaps [llength $previewBitmapList]
# Set the new bitmap
set previewBitmapFile \
[lindex $previewBitmapList $nthPreviewBitmapShow]
if {[previewBitmapGet $previewBitmapFile [archiveGet]]} {
controlValuesSet tornadoAutoRun@@.previewBitmap \
[tempDirGet]$previewBitmapFile
}
# Set the title
set previewProductName [lindex [lindex $previewBitmapList 0] 0]
if {[regexp {^([a-zA-Z])([^/]+)/[0-9]+\.[Bb][Mm][Pp]$} \
$previewProductName dummy first remainder]} {
set previewProductName \
[format "%s%s" [string toupper $first] $remainder]
tornadoAutoRun@@previewPageTitleSet
}
} else {
autoTimerCallbackSet tornadoAutoRun@@ 0
set nthPreviewBitmapShow 0
controlDestroy tornadoAutoRun@@.previewBitmap
controlDestroy tornadoAutoRun@@.previousSlide
controlDestroy tornadoAutoRun@@.nextSlide
controlDestroy tornadoAutoRun@@.cancelPreview
# Reinitialize some globals
set nthPreviewBitmapShow 0
set previewBitmapList ""
set nPreviewBitmaps 0
set previewProductName ""
welcomePageLayoutPrepare
}
}
proc tornadoAutoRun@@windowClose {} {
autoTimerCallbackSet tornadoAutoRun@@ 0
windowClose tornadoAutoRun@@
}
proc tornadoAutoRunShow {} {
catch {soundPlay -async [CDDriveGet]RESOURCE/SOUNDS/TORHELLO.WAV}
dialogCreate -name tornadoAutoRun@@ \
-w 100 -h 100 -init tornadoAutoRun@@Init \
-nocontexthelp \
-exit {
catch {global setup_lib}
if {$setup_lib != ""} {
dllUnload $setup_lib
set setup_lib ""
}
} \
-nocontexthelp
catch {soundPlay [CDDriveGet]RESOURCE/SOUNDS/TORBYE.WAV}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -