5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# $Id: idnconf.tcl,v 1.1 2003/06/04 00:27:42 marka Exp $
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# idnconf.tcl - configure idn wrapper
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#############################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Copyright (c) 2000,2002 Japan Network Information Center.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# All rights reserved.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# By using this file, you agree to the terms and conditions set forth bellow.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# LICENSE TERMS AND CONDITIONS
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# The following License Terms and Conditions apply, unless a different
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# license is obtained from Japan Network Information Center ("JPNIC"),
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Chiyoda-ku, Tokyo 101-0047, Japan.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# 1. Use, Modification and Redistribution (including distribution of any
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# modified or derived work) in source and/or binary forms is permitted
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# under this License Terms and Conditions.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# 2. Redistribution of source code must retain the copyright notices as they
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# appear in each source code file, this License Terms and Conditions.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# 3. Redistribution in binary form must reproduce the Copyright Notice,
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# this License Terms and Conditions, in the documentation and/or other
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# materials provided with the distribution. For the purposes of binary
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# distribution the "Copyright Notice" refers to the following language:
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# 4. The name of JPNIC may not be used to endorse or promote products
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# derived from this Software without specific prior written approval of
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# JPNIC.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#############################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsglobal configFile configBack
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsglobal registryKey registryEnc registryDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsglobal filesCpy filesRen filesDel
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# idnkit version
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset version "1.0"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset configFile "idnconf.lst" ;# list of wrapped program
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset configBack "idnconf.bak" ;# backup of previous data
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset serverKey "HKEY_LOCAL_MACHINE\\Software\\JPNIC\\IDN"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset serverLogLevel LogLevel
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset serverLogLevelDef -1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset serverLogLevelNone -1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset serverLogFile LogFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset serverLogFileDef {C:\idn_wrapper.log}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset serverConfFile ConfFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset perprogKey "HKEY_LOCAL_MACHINE\\Software\\JPNIC\\IDN\\PerProg\\"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset perprogEnc Encoding
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset perprogDef Default
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset logFileNameDef idn_wrapper.log
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset confFileNameDef idn.conf
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset filesCpy11 { "wsock32.dll" }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset filesCpy20 { "wsock32.dll" "ws2_32.dll" }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset filesDel11 { "wsock32.dll" }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset filesDel20 { "wsock32.dll" "ws2_32.dll" }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset local_dll 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# OS version check
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc get_os_version {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global os_version tcl_platform
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[llength [info globals os_version]] > 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $os_version
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- $tcl_platform(os) {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows 95" {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- $tcl_platform(osVersion) {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews 4.0 {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version {Windows 95}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews 4.10 {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version {Windows 98}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews 4.90 {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version {Windows Me}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows NT" {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- $tcl_platform(osVersion) {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews 3.51 -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews 4.0 {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version {Windows NT}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews 5.0 {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version {Windows 2000}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews default {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # XP or .NET
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version {Windows XP}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Win32s" {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews error "idn wrapper does not support Windows 3.1"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews default {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version "Unknown"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set os_version
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc support_dll_redirection {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global dll_redirection
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[llength [info globals dll_redirection]] > 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $dll_redirection
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- [get_os_version] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews {Windows 95} -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews {Windows NT} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # cannot force local DLL reference by .local file.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dll_redirection 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews default {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dll_redirection 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dll_redirection
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# handling pathname
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc getExeName { prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set elem [file split $prg]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set leng [expr {[llength $elem] - 1}]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set name [lindex $elem $leng]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set exe [file rootname $name]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $exe
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc getDirName { prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file dirname $prg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc getSystemDir {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global env
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- [get_os_version] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows 95" -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows 98" -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows Me" {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set sysDir $env(windir)/system
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews default {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set sysDir $env(SystemRoot)/system32
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $sysDir
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# loadList / saveList
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# loadList - load list of wrapped executables from $configFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# saveList - save list of wrapped executables into $configFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc loadList {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global configFile configBack
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [file exists $configFile] } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file copy -force $configFile $configBack
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set aList {}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set fd [open $configFile {CREAT RDONLY}]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews while { ! [eof $fd]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set line [gets $fd]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string length $line] > 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews lappend aList "$line"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews close $fd
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $aList
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc saveList { aList } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global configFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file delete -force $configFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set fd [open $configFile {CREAT WRONLY}]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach e $aList {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews puts $fd $e
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews close $fd
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# putList / getList - set/get list to/from listbox
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc putList { lb aList } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach e $aList {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $lb insert end $e
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc getList { lb } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $lb get 0 end
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# checkList / appendList / deleteList - check / append / delete program from/to listbox
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc checkList { lb prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set cnt 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set lst [getList $lb]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach n $lst {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string compare $prg $n] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews incr cnt
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $cnt
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc appendList { lb prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [checkList $lb $prg] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $lb insert end $prg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc deleteList { lb prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set cnt 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set lst [getList $lb]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach n $lst {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string compare $n $prg] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $lb delete $cnt
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews incr cnt
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# registry operations
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regGetEncode { prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global perprogKey perprogEnc perprogDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string compare $prg "" ] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $perprogDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![isWindows]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $perprogDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews package require registry 1.0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set name [getExeName $prg]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set key $perprogKey$name
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [catch {set enc [registry get $key $perprogEnc]} err] } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $perprogDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string compare $enc ""] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $perprogDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $enc
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regSetEncode { prg enc } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global perprogKey perprogEnc perprogDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![isWindows]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews package require registry 1.0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set name [getExeName $prg]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set key $perprogKey$name
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string compare $enc $perprogDef] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set enc ""
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [catch {registry set $key $perprogEnc $enc sz} ] } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regGetLogLevel {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey serverLogLevel serverLogLevelDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regGetValue $serverKey $serverLogLevel $serverLogLevelDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regSetLogLevel {level} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey serverLogLevel
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetValue $serverKey $serverLogLevel $level dword
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regGetLogFile {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey serverLogFile serverLogFileDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set file [regGetValue $serverKey $serverLogFile $serverLogFileDef]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {file attributes $file -longname} lfile]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # Maybe $file doesn't exist (yet). Get the longname of
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # directory portion.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dir [file dirname $file]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {file attributes $dir -longname} ldir]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set ldir $dir
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set lfile [file join $ldir [file tail $file]]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file nativename $lfile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regSetLogFile {file} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey serverLogFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetValue $serverKey $serverLogFile [file nativename $file]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regGetConfFile {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey serverConfFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set file [regGetValue $serverKey $serverConfFile {}]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $file {}] == 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return {}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {file attributes $file -longname} lfile]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # Maybe $file doesn't exist (yet). Get the longname of
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # directory portion.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dir [file dirname $file]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {file attributes $dir -longname} ldir]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set ldir $dir
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set lfile [file join $ldir [file tail $file]]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file nativename $lfile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regSetConfFile {file} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey serverConfFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetValue $serverKey $serverConfFile [file nativename $file]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regGetWhere {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regGetValue $serverKey Where 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regSetWhere {where} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverKey
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetValue $serverKey Where $where dword
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regGetValue {key name default} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![isWindows]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews puts "--regGetValue $key $name"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $default
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews package require registry 1.0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {registry get $key $name} value]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $default
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $value {}] == 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $default
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $value
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc regSetValue {key name value {type sz}} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![isWindows]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews puts "--regSetValue $key $name $value"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews package require registry 1.0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {registry set $key $name $value $type}]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# install / uninstall DLL s
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc fileInstall { prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global env
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global filesCpy11 filesCpy20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![isWindows]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- [get_os_version] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows 95" -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows 98" -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows Me" {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set winDir $env(windir)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set sysDir $winDir/system
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set filesCpy $filesCpy11
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews default {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set winDir $env(SystemRoot)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set sysDir $winDir/system32
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set filesCpy $filesCpy20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set toDir [getDirName $prg ]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach n $filesCpy {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file copy -force $n $toDir
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc fileRemove { prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global filesDel11 filesDel20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![isWindows]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- [get_os_version] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows 95" {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set filesDel $filesDel11
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows 98" -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews "Windows Me" {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set filesDel $filesDel20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews default {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set filesDel $filesDel20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set fromDir [getDirName $prg ]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach n $filesDel {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file delete -force $fromDir/$n
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Wrap/Unwrap program
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc execWrap { pw lb dlg prg enc } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set prgName [$prg get]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set encName [$enc get]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # Make sure the program name is not empty
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $prgName {}] == 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews confErrorDialog $dlg "Program must be specified.\nClick \"Browse..\" button for browsing."
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # It is dangerous to wrap programs in the system directory.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set prgdir [file nativename [getDirName $prgName]]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set sysdir [file nativename [getSystemDir]]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare -nocase $prgdir $sysdir] == 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -icon error -type ok -title "Directory Error" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $dlg \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Cannot wrap applications in the system directory.\nPlease copy the EXE file to elsewhere and wrap the copied one."
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # Okay, copy the wrapper DLLs.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [fileInstall $prgName] } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -icon warning -type ok \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -title "Warning" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Cannot install DLLs" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [regSetEncode $prgName $encName] } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -icon warning -type ok \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -title "Warning" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Cannot set encoding" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews fileRemove $prgName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # if local flag is on, create $prgName.local.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global local_dll
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {$local_dll} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews create_dot_local $prgName $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews } else {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews remove_dot_local $prgName $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [checkList $lb $prgName] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews appendList $lb $prgName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews saveList [getList $lb]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc execUnwrap { pw lb dlg prg } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set prgName [$prg get]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[support_dll_redirection] && [file exists $prgName.local]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set ans [tk_messageBox -icon question -type yesno \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -title "Confirmation" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Also remove $prgName.local file?" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $dlg]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $ans yes] == 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews remove_dot_local $prgName $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [checkList $lb $prgName] == 1 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews fileRemove $prgName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews deleteList $lb $prgName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews saveList [getList $lb]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc create_dot_local {path {parent .}} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dotlocal $path.local
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[file exists $dotlocal]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {open $dotlocal w} fh]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -icon warning -type ok -title "Warning" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Cannot create $dotlocal" -parent $parent
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return -1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews close $fh
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc remove_dot_local {path {parent .}} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dotlocal $path.local
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[file exists $dotlocal] && [catch {file delete $dotlocal}]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -icon warning -type ok -title "Warning" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Cannot remove $dotlocal" -parent $parent
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return -1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# dialog for Wrap / Unwrap
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc syncEncode { v i op } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global prgName encName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set enc [regGetEncode $prgName]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string compare $encName $enc] != 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set encName $enc
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc confBrowse { p ePrg eEnc } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set types {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews { "Executable" .exe }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set file [tk_getOpenFile -filetypes $types -parent $p ]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string compare $file ""] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set enc [regGetEncode $file]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $ePrg delete 0 end
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $ePrg insert 0 $file
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc confWrap { pw lb } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global prgName encName local_dll
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set idx [$lb curselection]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [llength $idx] == 1 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set prg [$lb get $idx]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set local_dll [file exists $prg.local]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews } else {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set prg ""
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set top .wrap
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews toplevel $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grab $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm title $top "idn wrapper - Wrap Executable"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f1 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f2 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f1 -side top -fill x -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f2 -side top -fill x -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f1.f
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f1.f -fill both -expand on -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $top.f1.f
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $w.prgtitle -text "Program:"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $w.enctitle -text "Encoding:"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews entry $w.prgname -relief sunken -width 56 -textvariable prgName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews entry $w.encname -relief sunken -width 8 -textvariable encName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w_prgname $w.prgname
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w_encname $w.encname
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.browse -text "Browse.." \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -command [list confBrowse $w $w_prgname $w_encname]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $w.rbf
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews radiobutton $w.rbf.encdef -text "Default" -variable encName \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -value "Default"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews radiobutton $w.rbf.encutf -text "UTF-8" -variable encName \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -value "UTF-8"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.rbf.encdef $w.rbf.encutf -side left -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.prgtitle -row 0 -column 0 -sticky e
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.enctitle -row 1 -column 0 -sticky e
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.prgname -row 0 -column 1 -sticky we -pady 4 -padx 2 -columnspan 2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.browse -row 0 -column 3 -sticky w -pady 4 -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.encname -row 1 -column 1 -sticky we -pady 4 -padx 2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.rbf -row 1 -column 2 -sticky w -padx 2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[support_dll_redirection]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews checkbutton $w.local -text "Force local DLL reference" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -variable local_dll
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.local -row 2 -column 1 -sticky w -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid columnconfig $w 1 -weight 1 -minsize 20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid columnconfig $w 2 -weight 2 -minsize 20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews trace variable prgName w syncEncode
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $w.prgname delete 0 end
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $w.prgname insert 0 $prg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews focus $w.prgname
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $top.f2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.wrap -text "Wrap" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -command [list execWrap $pw $lb $top $w_prgname $w_encname]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.cancel -text "Cancel" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -command [list destroy $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.cancel -side right -fill y -padx 12 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.wrap -side right -fill y -padx 12 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tkwait window $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc confUnwrap { pw lb } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set idx [$lb curselection]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [llength $idx] != 1 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -icon warning -type ok \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -title "Warning" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "first, select unwrapping executable" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $pw
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set prg [$lb get $idx]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if { [string length $prg] == 0 } {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -icon warning -type ok \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -title "Warning" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "first, select unwrapping executable" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $pw
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set top .unwrap
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews toplevel $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grab $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm title $top "idn wrapper - Unwrap Executable"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f1 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f2 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f2 -side bottom -fill x
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f1 -side bottom -fill x -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f1.f
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f1.f -padx 4 -pady 4 -fill both -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $top.f1.f
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $w.prgtitle -text "Program:"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews entry $w.prgname -relief sunken -width 56 -textvariable prgName
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $w.prgname delete 0 end
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $w.prgname insert 0 $prg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w_prgname $w.prgname
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.prgtitle -row 0 -column 0 -sticky w
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.prgname -row 0 -column 1 -sticky we -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid columnconfig $w 1 -weight 1 -minsize 20
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $top.f2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.wrap -text "Unwrap" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -command [list execUnwrap $pw $lb $top $w_prgname]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.cancel -text "Cancel" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -command [list destroy $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.cancel -side right -padx 12 -pady 6
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.wrap -side right -padx 12 -pady 6
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews focus $w.wrap
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tkwait window $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc unwrapAll {pw lb} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set ans [tk_messageBox -type yesno -default no -icon question \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $pw -title {idn wrapper Configuration} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message {Really unwrap all programs?}]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $ans yes] != 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach prog [$lb get 0 end] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews fileRemove $prog
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[support_dll_redirection]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set delete_type yes
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach prog [$lb get 0 end] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![file exists $prog.local]} continue
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- $delete_type {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews yes -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews no {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set delete_type [dotLocalDialog $prog $delete_type]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews switch -- $delete_type {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews yes -
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews yesall {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews remove_dot_local $prog $pw
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $lb delete 0 end
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews saveList {}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc rewrapAll {pw lb} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set ans [tk_messageBox -type yesno -default yes -icon question \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $pw -title {idn wrapper Configuration} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message {Really rewrap all programs?}]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $ans yes] != 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach prog [$lb get 0 end] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews fileInstall $prog
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc confLog {pw} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global _logLevel _logFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set top .log
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews catch {destroy $top}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews toplevel $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm title $top "idn wrapper - Log Configuration"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews # wm transient $top $pw
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set _logLevel [regGetLogLevel]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set _logFile [regGetLogFile]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f1 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.f2 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f2 -side bottom -fill x
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.f1 -side top -fill both -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $top.f1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $w.lv_l -text "Log Level:"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $w.lv_v
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global serverLogLevelNone
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set i 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach {lvl text} [list $serverLogLevelNone None \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews 0 Fatal 1 Error 2 Warning 3 Info 4 Trace] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews radiobutton $w.lv_v.btn$i -text $text -value $lvl -variable _logLevel
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.lv_v.btn$i -side left -padx 3
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews incr i
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $w.ld_l -text "Log File:"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $w.ld_v
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews entry $w.ld_v.e -width 40 -textvariable _logFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews focus $w.ld_v.e
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.ld_v.b -text "Browse.." -command [list selectLog $top $w.ld_v.e]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.ld_v.b -side right -fill y -padx 6
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.ld_v.e -side left -fill both -expand yes
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews #label $w.lo_l -text "Log Operation:"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $w.lo_v
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.lo_v.show -text "View" -command [list showLog $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.lo_v.delete -text "Delete" -command [list deleteLog $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.lo_v.show $w.lo_v.delete -side left -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.lv_l -row 0 -column 0 -sticky e -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.ld_l -row 1 -column 0 -sticky e -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews #grid $w.lo_l -row 2 -column 0 -sticky e -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.lv_v -row 0 -column 1 -sticky w -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.ld_v -row 1 -column 1 -sticky we -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.lo_v -row 2 -column 1 -sticky w -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $top.f2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.ok -text "OK" -command [list configureLog $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.cancel -text "Cancel" -command [list destroy $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.cancel -side right -padx 12 -pady 6
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.ok -side right -padx 12 -pady 6
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc configureLog {top} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global _logLevel _logFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {$_logLevel != [regGetLogLevel] ||
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews [string compare $_logFile [regGetLogFile]] != 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dir [file dirname $_logFile]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $dir {}]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {![file exists $dir]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews confErrorDialog $top "Directory $dir doesn't exist"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews } elseif {![file isdirectory $dir]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews confErrorDialog $top "$dir is not a directory"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetLogLevel $_logLevel
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetLogFile $_logFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -type ok -default ok -icon info -parent $top \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -title "idn wrapper Configuration" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Changing log level or file does not affect already running processes."
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc selectLog {top e} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global logFileNameDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set file [tk_getSaveFile -title {idn wrapper Logfile Selection} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -defaultextension .log \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -filetypes {{{Log Files} .log} {{All Files} *}} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -initialfile $logFileNameDef \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $file {}]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $e delete 0 end
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $e insert insert $file
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc showLog {top} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global _logFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {exec notepad.exe $_logFile &} r]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews confErrorDialog $top "Cannot execute notepad"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc deleteLog {top} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global _logFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set ans [tk_messageBox -type yesno -default no -icon question \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $top -title "idn wrapper Configuration" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -message "Really delete $_logFile?"]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $ans yes] == 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews file delete $_logFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# dialog for .local deletion
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc dotLocalDialog {path {default yes}} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set parent .
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set dlg .dotlocaldlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews catch {destroy $dlg}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews toplevel $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm iconname $dlg Dialog
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm title $dlg Confirmation
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm transient $dlg $parent
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm protocol $dlg WM_DELETE_WINDOW {}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $dlg.f1 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $dlg.f2 -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $dlg.f1 -side top -fill x -expand on -ipadx 2m -ipady 4m
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $dlg.f2 -side top -fill x -ipadx 2m
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $dlg.f1.bm -bitmap question -bd 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $dlg.f1.msg -text "Remove $path.local?" -wraplength 10c
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $dlg.f1.bm -side left -padx 3m -pady 2m
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $dlg.f1.msg -side left -padx 2m -pady 2m
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global dotlocal_selection
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach {btn lbl} {yes Yes no No yesall {Yes to All} noall {No to All}} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set bw $dlg.f2.btn$btn
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $bw -text $lbl -default normal \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -command [list set dotlocal_selection $btn]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $default $btn] == 0} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $bw configure -default active
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews focus $bw
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews bind $bw <Return> {%W flash; %W invoke}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $bw -side left -padx 3m -pady 2m
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grab $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews ::tk::PlaceWindow $dlg widget $parent
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews vwait dotlocal_selection
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $dlg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews return $dotlocal_selection
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# dialog for advanced configuration
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc advancedConf {pw} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set top .adv
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews catch {destroy $top}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews toplevel $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews wm title $top "idn wrapper - Advanced Configuration"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global _mdnOperation _confFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set _mdnOperation [regGetWhere]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set _confFile [regGetConfFile]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach f {f1 f2 f3} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $top.$f -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $top.$f -side top -fill x
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set f $top.f1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $f.lbl -text {IDN Wrapping Mode}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $f.f
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $w
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews foreach {rb val txt} [list \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews rb1 0 {Wrap both WINSOCK 1.1 and WINSOCK 2.0} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews rb2 2 {Wrap only WINSOCK 1.1} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews rb3 3 {Wrap only WINSOCK 2.0} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews rb4 1 "Wrap only WINSOCK2.0 if it exists.\nOtherwise wrap only WINSOCK1.1"] {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews radiobutton $w.$rb -text $txt -variable _mdnOperation -value $val \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -anchor w -justify left
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.$rb -side top -fill x -pady 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $f.lbl -side top -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w -side top -fill both -padx 20 -pady 10
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set f $top.f2
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $f.lbl -text {IDN Configuration}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $f.lbl -side top -fill x -pady 6
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $f.f
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews frame $w
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w -side top -fill both -padx 10 -pady 6
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews label $w.l1 -text {Config File:}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews #label $w.l2 -text {Config Operation:}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews entry $w.e -width 40 -textvariable _confFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews focus $w.e
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.br -text "Browse.." -command [list selectConf $top $w.e]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.b -text Edit -command [list editConf $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.l1 -row 0 -column 0 -sticky e -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews #grid $w.l2 -row 1 -column 0 -sticky e -padx 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.e -row 0 -column 1 -sticky we -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.b -row 1 -column 1 -sticky w -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews grid $w.br -row 0 -column 2 -sticky w -padx 4 -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set w $top.f3
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.ok -text "OK" -command [list advConf $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews button $w.cancel -text "Cancel" -command [list destroy $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.cancel -side right -padx 12 -pady 8
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews pack $w.ok -side right -padx 12 -pady 8
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc editConf {top} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global _confFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[catch {exec notepad.exe $_confFile &} r]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews confErrorDialog $top "Cannot execute notepad"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc selectConf {top e} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global confFileNameDef
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews set file [tk_getOpenFile -title {idn wrapper Config File Selection} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -defaultextension .conf \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -filetypes {{{Config Files} .conf} {{All Files} *}} \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -initialfile $confFileNameDef \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -parent $top]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews if {[string compare $file {}]} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $e delete 0 end
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $e insert insert $file
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews }
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc advConf {top} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global _mdnOperation _confFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetWhere $_mdnOperation
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews regSetConfFile $_confFile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews destroy $top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# utility
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc confErrorDialog {top message} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews tk_messageBox -default ok -icon error -parent $top -type ok \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -title {idn wrapper Configuration Error} -message $message
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsproc isWindows {} {
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews global tcl_platform
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews expr {[string compare $tcl_platform(platform) "windows"] == 0}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews}
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# config program start here
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewswm title . "idn wrapper - Configuration"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewswm iconname . "idn wrapper - Configuration"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewslabel .title -bd 1 -relief raised -pady 5 \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -text "idn wrapper Configuration Program version $version"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsframe .left -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsframe .right -bd 1 -relief raised
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsframe .lst
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewslabel .lst.title -text "Wrapped Programs" -pady 3
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewslistbox .lst.list -width 64 -height 16 -setgrid 1 \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -xscrollcommand ".lst.xscroll set" \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews -yscrollcommand ".lst.yscroll set"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsscrollbar .lst.yscroll -orient vertical -command ".lst.list yview"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsscrollbar .lst.xscroll -orient horizontal -command ".lst.list xview"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsgrid .lst.title -row 0 -column 0 -columnspan 2 -sticky news
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsgrid .lst.list -row 1 -column 0 -sticky news
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsgrid .lst.xscroll -row 2 -column 0 -sticky news
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsgrid .lst.yscroll -row 1 -column 1 -sticky news
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsgrid rowconfig .lst 1 -weight 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsgrid columnconfig .lst 0 -weight 1
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsframe .btn
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsbutton .btn.wrap -text "Wrap.." -command [list confWrap . .lst.list]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsbutton .btn.unwrap -text "Unwrap.." -command [list confUnwrap . .lst.list]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsbutton .btn.unwrapall -text "Unwrap All" -command [list unwrapAll . .lst.list]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsbutton .btn.rewrapall -text "Rewrap All" -command [list rewrapAll . .lst.list]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsframe .btn.spacing1 -width 1 -height 12 -bd 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsbutton .btn.log -text "Log.." -command [list confLog .]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsframe .btn.spacing2 -width 1 -height 12 -bd 0
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsbutton .btn.adv -text "Advanced.." -command [list advancedConf .]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsbutton .btn.exit -text Exit -command exit
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.wrap -side top -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.unwrap -side top -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.unwrapall -side top -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.rewrapall -side top -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.spacing1 -side top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.log -side top -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.spacing2 -side top
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.adv -side top -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn.exit -side bottom -fill x -pady 4
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .lst -in .left -padx 4 -pady 4 -fill both -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .btn -in .right -padx 6 -pady 4 -fill both -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .title -side top -fill x
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .right -side right -fill y
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewspack .left -side left -fill y -expand on
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# then set current list into listbox
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsset theList [loadList]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#saveList $theList
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsputList .lst.list $theList
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews########################################################################