Fixed runing on Win7 without installation

This commit is contained in:
Sergey Kalinin 2018-02-15 21:29:47 +03:00
parent 987b4c2745
commit 0d1e60a619
4 changed files with 40 additions and 403 deletions

View File

@ -13,6 +13,7 @@
- Fixed "Close all" procedure if opened files from projects and file browser
- Fixed parsing some procedure name like ::proc::name or proc_na::me(aa) and parameters {{} {} {}}
- Added opening last active project when project run
- Fixed Windows OS running without installation
13.02.2018
- Added gray theme
@ -364,3 +365,4 @@ characters to the right of the insertion cursor.
- Fix small error with delete project procedure
- Fix uncorrect cursor position counter into editor

View File

@ -1,389 +0,0 @@
#!/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
}
}
}

View File

@ -255,22 +255,21 @@ $m add command -label [::msgcat::mc "Refresh"] -font $fontNormal -accelerator "F
menubutton .frmMenu.mnuCVS -text [::msgcat::mc "Modules"] -menu .frmMenu.mnuCVS.m \
-font $fontNormal -state normal -bg $editor(bg) -fg $editor(fg)
set m [menu .frmMenu.mnuCVS.m -bg $editor(bg) -fg $editor(fg)]
if {$module(tkcvs) != ""} {
if {[info exists module(tkcvs)]} {
$m add command -label "TkCVS" -command {DoModule tkcvs} -font $fontNormal
}
if {$module(tkdiff) != ""} {
if {[info exists module(tkdiff)]} {
$m add command -label "TkDIFF+" -command {DoModule tkdiff} -font $fontNormal
}
if {$module(tkregexp) != ""} {
if {[info exists module(tkregexp)]} {
$m add command -label "TkREGEXP" -command {DoModule tkregexp} -font $fontNormal
}
if {$module(gitk) != ""} {
if {[info exists module(gitk)]} {
$m add command -label "Gitk" -font $fontNormal -command {
DoModule gitk
GetTagList [file join $workDir $activeProject.tags] ;# geting tag list
}
}
menubutton .frmMenu.mnuHelp -text [::msgcat::mc "Help"] -menu .frmMenu.mnuHelp.m \
-underline 0 -font $fontNormal -bg $editor(bg) -fg $editor(fg)
set m [menu .frmMenu.mnuHelp.m -bg $editor(bg) -fg $editor(fg)]
@ -499,3 +498,4 @@ if {[info exists workingProject]} {
TreeDoubleClick .frmBody.frmCat.noteBook.fprojects.frmTree.tree $workingProject
}
}

View File

@ -17,8 +17,23 @@ package require msgcat
set wishOpList [info commands]
## DO NOT EDIT THIS LINE! USE install.tcl SCRIPT ##
set rootDir "/usr"
set tclDir "/usr/bin"
# 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"
# }
set tclDir [file dirname [info nameofexecutable]]
puts $tclDir
set rootDir [pwd]
#set rootDir "/usr"
#set tclDir "/usr/bin"
if {[file exists $env(HOME)/projects/tcl/projman]==1} {
set dataDir "[file join $env(HOME) projects tcl projman lib]"
@ -27,11 +42,16 @@ if {[file exists $env(HOME)/projects/tcl/projman]==1} {
set msgDir "[file join $env(HOME) projects tcl projman msgs]"
set binDir "[file join $env(HOME) projects tcl projman]"
} else {
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 dataDir "[file join $rootDir lib]"
set docDir "[file join $rootDir hlp ru]"
set imgDir "[file join $rootDir img]"
set msgDir "[file join $rootDir msgs]"
set binDir $rootDir
# 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]
@ -45,7 +65,7 @@ if {$tcl_platform(platform) == "unix"} {
set tmpDir "c:\\temp"
}
if {[info exist env(HOMEDRIVE)] && [info exists env(HOMEPATH)]} {
set workDir "[file join $env(HOMEDRIVE)/$env(HOMEPATH) .projman]"
set workDir "[file join $env(HOMEDRIVE) $env(HOMEPATH) .projman]"
} else {
set workDir "[file join $rootDir .projman]"
}
@ -54,7 +74,7 @@ if {[file exists $workDir] == 0} {file mkdir $workDir}
if {[file exists $tmpDir] == 0} {file mkdir $tmpDir}
if {[file exists [file join $workDir projman.conf]] == 0} {
file copy -force -- [file join $binDir projman.conf] [file join $workDir projman.conf]
file copy -force -- projman.conf [file join $workDir projman.conf]
}
source [file join $workDir projman.conf]
@ -121,3 +141,7 @@ option add *Listbox.foreground $editor(fg) startupFile
option add *Listbox.background $editor(bg) startupFile
option add *Scrollbar.background $editor(bg) startupFile