b3da4421d8
Added colored icon for main window Fixed "Close all" procedure if opened files from projects and file browser
390 lines
13 KiB
Tcl
Executable File
390 lines
13 KiB
Tcl
Executable File
#!/usr/bin/wish
|
|
|
|
###########################################################
|
|
# Tcl/Tk Project Manager #
|
|
# install script #
|
|
# Copyright (c) "Sergey Kalinin", 2001, http://nuk-svk.ru #
|
|
# Author: Sergey Kalinin banzaj28@yandex.ru #
|
|
###########################################################
|
|
|
|
## SETTING VARIABLES AND DIRECTORYES ##
|
|
set ver "0.4.5"
|
|
set imgDir img
|
|
set msgDir msgs
|
|
set docDir hlp
|
|
set hlDir highlight
|
|
set fontNormal "helvetica 12 normal roman"
|
|
package require msgcat
|
|
package require BWidget
|
|
|
|
::msgcat::mclocale en
|
|
::msgcat::mcload msgs
|
|
|
|
if {$tcl_platform(platform) == "unix"} {
|
|
set initDir "$env(HOME)"
|
|
set rootDir "/usr/local"
|
|
set tmpDir "$env(HOME)/tmp"
|
|
set tclDir "/usr/bin"
|
|
} elseif {$tcl_platform(platform) == "windows"} {
|
|
set initDir "c:\\"
|
|
set rootDir "c:\\Tcl"
|
|
set tmpDir "c:\\temp"
|
|
set tclDir "C:\\Tcl\\bin"
|
|
}
|
|
|
|
proc InsertEnt {entry text} {
|
|
entry delete 0 end
|
|
$entry insert end $text
|
|
}
|
|
proc SelectDir {dir} {
|
|
set dirName [tk_chooseDirectory -initialdir $dir\
|
|
-title "[::msgcat::mc "Select directory"]"\
|
|
-parent .]
|
|
return $dirName
|
|
}
|
|
## GET HELP DIRECTORYES ##
|
|
proc GetHelp {} {
|
|
global docDir localeList
|
|
set localeList ""
|
|
if {[catch {cd $docDir}] != 0} {
|
|
return ""
|
|
}
|
|
foreach file [lsort [glob -nocomplain *]] {
|
|
if {[file isdirectory $file] == 1 && $file != "CVS"} {
|
|
lappend localeList [list [file rootname $file]]
|
|
}
|
|
}
|
|
catch {cd ..}
|
|
return $localeList
|
|
}
|
|
|
|
proc GetLocale {} {
|
|
global msgDir locList
|
|
set locList ""
|
|
if {[catch {cd $msgDir}] != 0} {
|
|
return ""
|
|
}
|
|
foreach file [lsort [glob -nocomplain *.msg]] {
|
|
puts $file
|
|
if {[file isdirectory $file] == 0} {
|
|
puts [file rootname $file]
|
|
lappend locList [list [file rootname $file]]
|
|
}
|
|
}
|
|
catch {cd ..}
|
|
return $locList
|
|
}
|
|
|
|
set w .
|
|
wm title $w "Install Tcl/Tk Project Manager"
|
|
#wm resizable $w 0 0
|
|
#wm geometry $w 400x350
|
|
set top [frame .frmTop -relief groove -borderwidth 1 -background white]
|
|
pack $top -fill x
|
|
|
|
image create photo imgAbout -format gif -file [file join img projman.gif]
|
|
label $top.lblImg -image imgAbout -background white
|
|
pack $top.lblImg -side top -pady 5 -padx 5
|
|
|
|
set frm [frame .frmMain -relief groove -borderwidth 1]
|
|
pack $frm -expand 1 -fill both
|
|
|
|
set btn [frame .frmButton -relief groove -borderwidth 1]
|
|
pack $btn -fill x
|
|
|
|
image create photo imgFold -format gif -file [file join img folder.gif]
|
|
|
|
set frm1 [frame $frm.frmRootDir]
|
|
pack $frm1 -fill x -pady 2
|
|
label $frm1.lblRootDir -text "Install dir" -width 23 -anchor w
|
|
entry $frm1.txtRootDir
|
|
button $frm1.btnRootDir -borderwidth {1} -image imgFold\
|
|
-command {
|
|
$frm1.txtRootDir delete 0 end
|
|
$frm1.txtRootDir insert end [SelectDir $initDir]
|
|
}
|
|
pack $frm1.lblRootDir -side left
|
|
pack $frm1.txtRootDir -side left -fill x -expand true
|
|
|
|
pack $frm1.btnRootDir -side left
|
|
set frm4 [frame $frm.frmTclDir]
|
|
pack $frm4 -fill x -pady 2
|
|
label $frm4.lblTclDir -text "Tcl bin dir" -width 23 -anchor w
|
|
entry $frm4.txtTclDir
|
|
button $frm4.btnTclDir -borderwidth {1} -image imgFold\
|
|
-command {
|
|
$frm4.txtTclDir delete 0 end
|
|
$frm4.txtTclDir insert end [SelectDir $initDir]
|
|
}
|
|
pack $frm4.lblTclDir -side left
|
|
pack $frm4.txtTclDir -side left -fill x -expand true
|
|
pack $frm4.btnTclDir -side left
|
|
|
|
set frm6 [frame $frm.frmDocLang]
|
|
pack $frm6 -fill x -pady 2
|
|
label $frm6.lblLang -text [::msgcat::mc "Documentation language"]\
|
|
-width 23 -anchor w
|
|
set combo [ComboBox $frm6.txtLang\
|
|
-textvariable langDoc -command "puts 123"\
|
|
-selectbackground "#55c4d1" -selectborderwidth 0\
|
|
-values [GetHelp]]
|
|
pack $frm6.lblLang -side left
|
|
pack $frm6.txtLang -side left -fill x -expand true
|
|
|
|
set frm7 [frame $frm.frmLocale]
|
|
pack $frm7 -fill x -pady 2
|
|
label $frm7.lblLocale -text [::msgcat::mc "Interface language"]\
|
|
-width 23 -anchor w
|
|
set comboLocale [ComboBox $frm7.txtLocale\
|
|
-textvariable localeSet -command "puts 123"\
|
|
-selectbackground "#55c4d1" -selectborderwidth 0\
|
|
-values [GetLocale]]
|
|
pack $frm7.lblLocale -side left
|
|
pack $frm7.txtLocale -side left -fill x -expand true
|
|
|
|
|
|
button $btn.btnOk -text "Next" -width 10 -borderwidth {1}\
|
|
-command {
|
|
CopyFiles [$frm1.txtRootDir get] [$frm4.txtTclDir get] $langDoc $localeSet
|
|
}
|
|
button $btn.btnCancel -text "Exit" -width 10 -borderwidth {1}\
|
|
-command {exit}
|
|
|
|
pack $btn.btnOk $btn.btnCancel -side left -padx 2 -pady 2 -expand 1
|
|
|
|
bind $w <Escape> "exit"
|
|
|
|
InsertEnt $frm1.txtRootDir $rootDir
|
|
InsertEnt $frm4.txtTclDir $tclDir
|
|
$combo setvalue @0
|
|
$comboLocale setvalue @0
|
|
|
|
proc CopyFiles {rootDir tclDir langDoc locale} {
|
|
global ver tcl_platform binDir hlDir
|
|
set exeName projman
|
|
set modules {
|
|
editor.tcl help.tcl html_lib.tcl procedure.tcl
|
|
main.tcl settings.tcl projects.tcl imgviewer.tcl
|
|
baloon.tcl completition.tcl taglist.tcl supertext.tcl
|
|
pane.tcl highlight/html.tcl highlight/spec.tcl highlight/tcl.tcl highlight/tex.tcl
|
|
highlight/caml.tcl highlight/fortran.tcl highlight/java.tcl
|
|
highlight/perl.tcl highlight/php.tcl highlight/rivet.tcl highlight/ruby.tcl
|
|
}
|
|
set docFiles {TODO README INSTALL CHANGELOG COPYING THANKS}
|
|
set confFiles {projman.spec projman.conf}
|
|
|
|
if {[string length [string trim $rootDir]]} {
|
|
regsub -all {\\} $rootDir {\\\\} rootDir_
|
|
set rootDir $rootDir_
|
|
}
|
|
if {[string length [string trim $tclDir]]} {
|
|
regsub -all {\\} $tclDir {\\\\} tclDir_
|
|
set tclDir $tclDir_
|
|
}
|
|
destroy .frmMain.frmRootDir
|
|
destroy .frmMain.frmTclDir
|
|
destroy .frmMain.frmLocale
|
|
destroy .frmMain.frmDocLang
|
|
set frm ".frmMain"
|
|
pack $frm -expand 1 -fill both
|
|
set text [text $frm.text -yscrollcommand "$frm.yscroll set" \
|
|
-relief sunken -wrap word -highlightthickness 0\
|
|
-selectborderwidth 0 -selectbackground #55c4d1 -height 15 -width 30]
|
|
scrollbar $frm.yscroll -relief sunken -borderwidth {1} -width {10} -takefocus 0 \
|
|
-command "$frm.text yview"
|
|
pack $frm.text -side left -fill both -expand true
|
|
pack $frm.yscroll -side left -fill y
|
|
|
|
$text insert end "Root dir - $rootDir\nTcl dir - $tclDir"
|
|
$text insert end "\n-- Copying files --\n"
|
|
|
|
set binDir [file join $rootDir bin ]
|
|
set dataDir [file join $rootDir share projman ]
|
|
set docDir [file join $rootDir share doc projman-$ver]
|
|
set imgDir [file join $dataDir img ]
|
|
set msgDir [file join $dataDir msgs ]
|
|
set hlDir [file join $dataDir highlight ]
|
|
|
|
## CREATE DIRECTORYES ##
|
|
if {[file exists $rootDir] != 1} {file mkdir $rootDir}
|
|
if {[file exists $binDir ] != 1} {file mkdir $binDir }
|
|
if {[file exists $dataDir] != 1} {file mkdir $dataDir}
|
|
if {[file exists $docDir ] != 1} {file mkdir $docDir }
|
|
if {[file exists $imgDir ] != 1} {file mkdir $imgDir }
|
|
if {[file exists $msgDir ] != 1} {file mkdir $msgDir }
|
|
if {[file exists $hlDir ] != 1} {file mkdir $hlDir }
|
|
|
|
## CREATE EXECUTION FILE ##
|
|
puts [pwd]
|
|
set source [open "projman.tcl" "r"]
|
|
set exe [open [file join $binDir $exeName] "w"]
|
|
while {[gets $source line]>=0} {
|
|
if {[string match "set rootDir \"/usr\"" [string trim $line]] == 1} {
|
|
puts $exe "set rootDir \"$rootDir_\""
|
|
} elseif {[string match "set tclDir \"/usr/bin\"" [string trim $line]] == 1} {
|
|
puts $exe "set tclDir \"$tclDir_\""
|
|
} else {
|
|
puts $exe $line
|
|
}
|
|
}
|
|
close $source
|
|
close $exe
|
|
|
|
## SET PERMISSIONS ON FILE FOR UNIX OR CREATE start.bat FILE FOR WINDOWS ##
|
|
if {$tcl_platform(platform) == "unix"} {
|
|
file attributes [file join $binDir $exeName] -permissions 00755
|
|
} elseif {$tcl_platform(platform) == "windows"} {
|
|
set bat [open [file join $binDir projman.bat] "w"]
|
|
set progPath "[file join $binDir $exeName.tcl]"
|
|
file rename -force [file join $binDir $exeName] $progPath
|
|
regsub -all {/} $progPath "\\" progPath
|
|
set tclPath "[file join $tclDir wish.exe]"
|
|
regsub -all {/} $tclPath "\\" tclPath
|
|
puts $bat "\"$tclPath\" \"$progPath\""
|
|
close $bat
|
|
}
|
|
## COPYING MODULES FILES (*.tcl) ##
|
|
foreach file $modules {
|
|
lappend rList [list [file join . $file]]
|
|
set fileName [file join $file]
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $dataDir $fileName]
|
|
}
|
|
|
|
## COPYING CONFIG FILE ##
|
|
foreach fileName $confFiles {
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $dataDir $fileName]
|
|
}
|
|
## COPYING DOCUMENTATION (HELP) FILES ##
|
|
foreach fileName $docFiles {
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $docDir $fileName]
|
|
}
|
|
if {$locale == ""} {
|
|
set locale "en"
|
|
}
|
|
if {$langDoc == ""} {
|
|
set langDoc "en"
|
|
}
|
|
puts "Locale - $locale LangDoc - $langDoc"
|
|
if {[catch {cd [file join hlp $langDoc]}] != 0} {
|
|
return ""
|
|
}
|
|
foreach dir [lsort [glob -nocomplain *]] {
|
|
if {[file isdirectory $dir] == 1 && $dir != "CVS"} {
|
|
if {[file exists [file join $docDir $dir]] != 1} {
|
|
file mkdir [file join $docDir $dir]
|
|
#puts [file join $docDir $dir]
|
|
}
|
|
foreach file [lsort [glob -nocomplain [file join $dir *.*]]] {
|
|
#puts $file
|
|
lappend rList [list [file join . $file]]
|
|
set fileName [file join $file]
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $docDir $fileName]
|
|
}
|
|
}
|
|
}
|
|
## COPYING IMAGE FILES ##
|
|
if {[catch {cd [file join .. .. img]}] != 0} {
|
|
return ""
|
|
}
|
|
foreach file [lsort [glob -nocomplain *.gif]] {
|
|
lappend rList [list [file join . $file]]
|
|
set fileName [file join $file]
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $imgDir $fileName]
|
|
}
|
|
foreach file [lsort [glob -nocomplain *.png]] {
|
|
lappend rList [list [file join . $file]]
|
|
set fileName [file join $file]
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $imgDir $fileName]
|
|
}
|
|
## COPYING MESSAGES FILES ##
|
|
if {[catch {cd [file join .. msgs]}] != 0} {
|
|
return ""
|
|
}
|
|
foreach file [lsort [glob -nocomplain *.msg]] {
|
|
lappend rList [list [file join . $file]]
|
|
set fileName [file join $file]
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $msgDir $fileName]
|
|
}
|
|
## COPYING HIGHLIGHT FILES ##
|
|
if {[catch {cd [file join .. highlight]}] != 0} {
|
|
return ""
|
|
}
|
|
foreach file [lsort [glob -nocomplain *.tcl]] {
|
|
lappend rList [list [file join . $file]]
|
|
set fileName [file join $file]
|
|
$text insert end "$fileName\n"
|
|
$text mark set insert end
|
|
$text see insert
|
|
file copy -force -- $fileName [file join $hlDir $fileName]
|
|
}
|
|
$text insert end "-- Copying file complite --"
|
|
$text mark set insert end
|
|
$text see insert
|
|
destroy .frmButton.btnOk
|
|
.frmButton.btnCancel configure -text "Finish" -command {exit}
|
|
|
|
SetVarLang $locale
|
|
}
|
|
|
|
|
|
#Michel SALVAGNIAC 7 avril 2002
|
|
#positionne la variable d'environnement LANG
|
|
#n?cessaire pour msgcat
|
|
#version de tcl/tk :8.3
|
|
#test? avec Windows 95,Windows NT4,Windows 2000, Windows XP pro
|
|
|
|
proc SetVarLang {lang} {
|
|
global tcl_platform rootDir
|
|
set language $lang
|
|
if {$tcl_platform(platform) == "windows"} {
|
|
#Windows NT,2000,XP PRO
|
|
if {$tcl_platform(os) == "Windows NT"} {
|
|
package require registry
|
|
tk_messageBox -type ok -icon warning \
|
|
-message "Modifying the Registry..."
|
|
set clebase "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment"
|
|
registry set $clebase LANG $language sz
|
|
#Windows 95
|
|
} elseif {$tcl_platform(os) == "Windows 95"} {
|
|
tk_messageBox -type ok -icon warning \
|
|
-message "Modifying the C:\\Autoexec.bat"
|
|
file copy -force c:/Autoexec.bat c:/autoexec.sav
|
|
set ficsys [open "c:/autoexec.bat" a+]
|
|
puts $ficsys "SET LANG=$language "
|
|
puts $ficsys "SET HOMEDRIVE=C:\\"
|
|
set workDir [file join $rootDir work]
|
|
regsub -all {/} $workDir {\\} home
|
|
puts $ficsys "SET HOMEPATH=$home"
|
|
close $ficsys
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|