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

📄 utilw32.tcl

📁 windml3.0.3
💻 TCL
📖 第 1 页 / 共 5 页
字号:
        # resize and reposition the dialog after.  This is
        # to workaround a UITclSh bug which does not allow
        # the window to shrink below its original size for
        # the billboard dialogs.

            dialogCreate -name $ctrlVals(mainWindow) \
                         -title $title -w 315 -h 204 \
                         -nocontexthelp \
                         -parent $ctrlVals(parentDialog) \
                         -modeless \
                         -controls $controls

            windowSizeSet $ctrlVals(mainWindow) 315 204

        } elseif {[removeBackground] && [info exists env(SETUP_USEKDE)]} {

        # Sizing and positioning a window causes
        # KDE to crash.  Initialize window for KDE at
        # full size, and later keep the same size
        # in the file copying billboard page.

            dialogCreate -name $ctrlVals(mainWindow) \
                         -title $title \
                         -nocontexthelp \
                         -parent $ctrlVals(mainWindow) \
                         -modeless \
                         -controls $controls -w 315 -h 204
    } else {
            dialogCreate -name $ctrlVals(mainWindow) \
                         -title $title -w 315 -h 204 \
                         -nocontexthelp \
                         -parent $ctrlVals(parentDialog) \
                         -modeless \
                         -controls $controls
    }

        set ctrlVals(parentDialog) $ctrlVals(mainWindow)
        windowQueryCloseCallbackSet $ctrlVals(mainWindow) quitCallback
    }

    customizeMainWindow $title
    return $ctrlVals(mainWindow)
}

#############################################################################
#
# customizeMainWindow - set the title of the wizard page
#
# This procedure will set the title of the wizard page
#
# SYNOPSIS
# .tS
# customizeMainWindow
# .tE
#
# PARAMETERS:
# .IP title
# title of the wizard page
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc customizeMainWindow {title} {
    global ctrlVals

    windowTitleSet $ctrlVals(mainWindow) $title

    foreach ctrl $ctrlVals(volatileFrm) {
        controlCreate $ctrlVals(mainWindow) $ctrl
    }

    set ctrlVals(jumpBack) 1
}

#############################################################################
#
# destroyVolatileFrm - close the wizard page
#
# This procedure will close the wizard page
#
# SYNOPSIS
# .tS
# destroyVolatileFrm
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc destroyVolatileFrm {} {
    global ctrlVals

    # First hide the controls to make it 'invisible', mainwin may be slow in
    # how it implements refresh logic on unix.

    foreach ctrl $ctrlVals(volatileFrm) {
        set pos [lsearch $ctrl "-name"]

        if {$pos != "-1"} {
            controlHide \
                $ctrlVals(mainWindow).[lindex $ctrl [expr $pos + 1]] 1
        }
    }

    # Then we destroy the controls

    foreach ctrl $ctrlVals(volatileFrm) {
        set pos [lsearch $ctrl "-name"]

        if {$pos != "-1"} {
            controlDestroy \
                $ctrlVals(mainWindow).[lindex $ctrl [expr $pos + 1]]
        }
    }
    set ctrlVals(volatileFrm) ""
}


#############################################################################
#
# helpCallback - display html help
#
# This procedure will display html help for that particular page
#
# SYNOPSIS
# .tS
# helpCallback
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc helpCallback {} {
    global ctrlVals
    global LMHelpPath

    set anchor c-install.html

    if { [isUnix] } {
        set helpFile [file join [cdromRootDirGet] RESOURCE HELP $anchor]
    } else {
        set rootDir "[cdromRootDirGet]\\"
        set helpFile [unixToDos [file join $rootDir RESOURCE HELP $anchor]]
    }

    dbgputs "Help file: $helpFile"

        if { [isUnix] } {

        if { [catch {exec ps | grep netscape} result] } {
            # if no Netscape browser currently open, try launching it

            if { [catch {exec netscape $helpFile &} result] } {
                # if no Netscape installed, warn user

                dialog ok_with_title "Online Help: Error!" \
                      "Cannot locate Netscape Navigator on this machine!\
                      \nNetscape Navigator 4.0 or higher is required\
                      for SETUP Help pages. Please be sure to\
                      install Netscape in order to access Help pages."
            }
        } else {
            # if Netscape is currently running, use same session
            catch {exec netscape -remote openURL($helpFile) &} result
        }

        } else { # windows

        # search for default internet browser

        foreach fExt ".htm .html" {

            if { ![catch {sysRegistryValueRead HKEY_CLASSES_ROOT $fExt ""} path] } {
                set path "$path\\shell\\open\\command"
 
                if { ![catch {sysRegistryValueRead HKEY_CLASSES_ROOT $path ""} browserPath] } {
                    regsub -all {\"} $browserPath "" browserPath
                    regsub -all {%.*} $browserPath "" browserPath
                    regsub -all { -.*} $browserPath "" browserPath
                    dbgputs "browser path: $browserPath"

                    if { [catch {exec $browserPath $helpFile &} result] } {
                        if { $fExt == ".html" } {
                            dialog ok_with_title "Online Help: Error!" \
                                "Cannot locate any local internet browser on this machine!\nPlease\
                                 be sure to install a browser in order to access Help pages."
                        }
                    } else {
                        # no error launching
                        break
                    }
                }
            }
        }
    }
}


#############################################################################
#
# backCallback - close the current wizard page and return to the previous
#                wizard page
#
# This procedure will close the current wizard page and return to the previous
# wizard page
#
# SYNOPSIS
# .tS
# backCallback
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc backCallback {} {
    global ctrlVals
    global setupVals

    # decrement the dialog index and re-create previous page

    set currPageIndex [lsearch $ctrlVals(pageList) $ctrlVals(currPage)]
    set prevPageIndex [expr $currPageIndex - 1]

    if {"$prevPageIndex" >= "0"} {
        set ctrlVals(lastPage) $ctrlVals(currPage)
        set ctrlVals(currPage) [lindex $ctrlVals(pageList) $prevPageIndex]
        reconstructPageList

        if { $setupVals(cmdMode) != "text" } {  destroyVolatileFrm  }

        pageCreate($ctrlVals(currPage))

    } else {
        if { $setupVals(cmdMode) != "text" } {        
            messageBox "Cannot go back further!"
        } else {
            puts "Cannot go back further!"
        }
    }
}

#############################################################################
#
# reconstructPageList - reconstruct the setup page list
#
# This procedure will reconstruct the page list. It detects the current page
# group  and if the current page is the first elemet in the group,
# it will remove the page list
#
# SYNOPSIS
# .tS
# reconstructPageList
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc reconstructPageList {} {
    global setupPageList ctrlVals

    set pg $setupPageList(currPageGrp)

    set index [eval lsearch {$setupPageList($pg)} $ctrlVals(lastPage)]
    if {$index == 0} {
        # match the fist element in the list
        pageListRemove $pg
    } elseif { $index == 1 } {
        # in case lmReload -> Email/Phone (page lead was removed),
        # check if page lead of that group is in current page list
        set firstPage [lindex $setupPageList($pg) 0]
        set firstIndex [lsearch $ctrlVals(pageList) $firstPage]

        if { $firstIndex == -1 } {
            # if page lead is not there and current page is 
            # the 2nd page from the group, remove pg group

            pageListRemove $pg
        }
    }
    dbgputs "reconstruct: $ctrlVals(pageList)"

}

#############################################################################
#
# pageListAdd - Add a new page list
#
# This procedure will append a page group to the existing page list
#
# SYNOPSIS
# .tS
# pageListAdd
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc pageListAdd {pageGrpName} {
    global ctrlVals setupPageList

    set ctrlVals(pageList) [eval concat $ctrlVals(pageList) \
        $setupPageList($pageGrpName)]

    # add new page group
    set setupPageList(currPageGrp) $pageGrpName
    set setupPageList(pageGroupList) \
        [concat $setupPageList(pageGroupList) $pageGrpName]

}

#############################################################################
#
# pageExists - Checks for existance of a page in ctrlVals(pageList)
#
# This procedure will remove a page group of the existing page list
#
# SYNOPSIS
# .tS
# pageExists page
# .tE
#
# PARAMETERS: page:  the page to check for in the ctrlVals(pageList)
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc pageExists {page} {
    global ctrlVals

    if {[lsearch $ctrlVals(pageList) $page] == "-1"} {
        return 0
    } else {
        return 1
    }       
}

#############################################################################
#
# pageListRemove - Remove a page list
#
# This procedure will remove a page group of the existing page list
#
# SYNOPSIS
# .tS
# pageListRemove
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc pageListRemove {group} {
    global setupPageList

    foreach i $setupPageList($group) {
        pageRemove $i
    }

    # remove the page group
    # pageGroupRemove
    set ix [llength $setupPageList(pageGroupList)]
    set ix [expr $ix - 1]
    set setupPageList(pageGroupList) \
        [lreplace $setupPageList(pageGroupList) $ix $ix]
    set setupPageList(currPageGrp) \
        [lindex $setupPageList(pageGroupList) end]

    dbgputs "removed pagegroup: $group"
    dbgputs "currentPageGrp: $setupPageList(currPageGrp)"
}



#############################################################################
#

⌨️ 快捷键说明

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