texlive[48955] Master: Refactoring, multiple repositories,
commits+siepo at tug.org
commits+siepo at tug.org
Sat Oct 20 11:17:48 CEST 2018
Revision: 48955
http://tug.org/svn/texlive?view=revision&revision=48955
Author: siepo
Date: 2018-10-20 11:17:47 +0200 (Sat, 20 Oct 2018)
Log Message:
-----------
Refactoring, multiple repositories, localization
Modified Paths:
--------------
trunk/Master/texmf-dist/scripts/tlshell/tlshell.tcl
trunk/Master/tlpkg/bin/tl-update-messages
trunk/Master/tlpkg/installer/install-tl-gui.tcl
trunk/Master/tlpkg/installer/install-tl-windows.cmd
trunk/Master/tlpkg/installer/install-tl.sh
trunk/Master/tlpkg/translations/nl.msg
trunk/Master/tlpkg/translations/nl.po
Added Paths:
-----------
trunk/Master/tlpkg/TeXLive/tltcl.tcl
Modified: trunk/Master/texmf-dist/scripts/tlshell/tlshell.tcl
===================================================================
--- trunk/Master/texmf-dist/scripts/tlshell/tlshell.tcl 2018-10-20 07:22:17 UTC (rev 48954)
+++ trunk/Master/texmf-dist/scripts/tlshell/tlshell.tcl 2018-10-20 09:17:47 UTC (rev 48955)
@@ -7,40 +7,38 @@
package require Tk
-# searchpath:
+# security: disable send
+catch {rename send {}}
+
+# declarations and utilities shared with install-tl-gui.tcl
+set ::instroot [exec kpsewhich -var-value=TEXMFROOT]
+source [file join $::instroot "tlpkg" "TeXLive" "tltcl.tcl"]
+
+# searchpath and locale:
# windows: most scripts run via [w]runscript, which adjusts the searchpath
-# for the current process.
-# unix/linux: tlshell.tcl should be run via a symlink in a directory
+# for the current process. The provided tcl/tk can set locale on the fly.
+# unix/linux:
+# we may need to run tlshell.tcl via a wrapper in order to
+# make localization work right for tcl/tk version 8.5 and on macos.
+# tlshell.[sh|tcl] should be run via a symlink in a directory
# which also contains (a symlink to) kpsewhich.
# This directory will be prepended to the searchpath.
# kpsewhich will disentangle symlinks.
-# dis/enable restore dialog
+# dis/enable the restore dialog
set do_restore 0
+
+# tlcontrib
+set tlcontrib "http://contrib.texlive.info/current"
+
# dis/enable debug output (only for private development purposes)
set ddebug 0
##### general housekeeping ############################################
-# security: disable send
-catch {rename send {}}
-
# menus: disable tearoff feature
option add *Menu.tearOff 0
-# no bold text for messages
-option add *Dialog.msg.font TkDefaultFont userDefault
-
-## italicized items; not used
-#font create it_font {*}[font configure TkDefaultFont]
-#font configure it_font -slant italic
-
-set plain_unix 0
-if {$::tcl_platform(platform) eq "unix" && \
- $::tcl_platform(os) ne "Darwin"} {
- set plain_unix 1
-}
-
proc search_nocase {needle haystack} {
if {$needle eq ""} {return -1}
if {$haystack eq ""} {return -1}
@@ -72,15 +70,6 @@
}
} ; # do_debug
-proc get_stacktrace {} {
- set level [info level]
- set s ""
- for {set i 1} {$i < $level} {incr i} {
- append s [format "Level %u: %s\n" $i [info level $i]]
- }
- return $s
-} ; # get_stacktrace
-
proc maketemp {ext} {
set fname ""
foreach i {0 1 2 3 4 5 6 7 8 9} { ; # ten tries
@@ -104,21 +93,6 @@
### GUI utilities #####################################################
-# dummy widgets for vertical spacing within $w
-set idummy -1
-proc spacing {w} {
- incr ::idummy
- pack [ttk::label $w.$::idummy -text " "]
-}
-
-proc pgrid {wdg args} { ; # grid command with padding
- grid $wdg {*}$args -padx 3 -pady 3
-}
-
-proc ppack {wdg args} { ; # pack command with padding
- pack $wdg {*}$args -padx 3 -pady 3
-}
-
# mouse clicks: deal with MacOS platform differences
if {[tk windowingsystem] eq "aqua"} {
event add <<RightClick>> <ButtonRelease-2> <Control-ButtonRelease-1>
@@ -131,61 +105,16 @@
set ::default_bg white
}
-# unicode symbols as fake checkboxes in ttk::treeview widgets
-proc mark_sym {mrk} {
- if $mrk {
- return "\u25A3" ; # 'white square containing black small square'
- } else {
- return "\u25A1" ; # 'white square'
- }
-} ; # mark_sym
-
-# place a toplevel, or at least its upperleft corner, centered wrt its parent
-proc place_dlg {wnd {p ""}} {
- if {$p eq ""} {
- set p [winfo toplevel [winfo parent $wnd]]
- if {$p eq ""} return
- }
- set g [wm geometry $p]
- scan $g "%dx%d+%d+%d" pw ph px py
- set hcenter [expr {$px + $pw / 2}]
- set vcenter [expr {$py + $ph / 2}]
- set g [wm geometry $wnd]
- set wh [winfo reqheight $wnd]
- set ww [winfo reqwidth $wnd]
- set wx [expr {$hcenter - $ww / 2}]
- if {$wx < 0} { set wx 0}
- set wy [expr {$vcenter - $wh / 2}]
- if {$wy < 0} { set wy 0}
- wm geometry $wnd [format "+%d+%d" $wx $wy]
- wm attributes $wnd -topmost 1
- wm attributes $p -topmost 0
- wm state $wnd normal
- raise $wnd $p
- tkwait visibility $wnd
- if {$::tcl_platform(platform) ne "windows"} {
- # dont understand why these give trouble in windows
- focus $wnd
- grab set $wnd
- }
-} ; # place_dlg
-
+# dialog with textbox
proc long_message {str type {p "."}} {
# alternate messagebox implemented as custom dialog
# not all message types are supported
if {$type ne "ok" && $type ne "okcancel" && $type ne "yesnocancel"} {
- err_exit "Illegal type $type for long_message"
+ err_exit "Unsupported type $type for long_message"
}
- set ::lms_parent $p
- unset -nocomplain ::lms_var
- do_debug "type $type"
- catch {destroy .tlmg}
- toplevel .tlmg -class Dialog
- wm withdraw .tlmg
- wm transient .tlmg .
- if $::plain_unix {wm attributes .tlmg -type dialog}
+ create_dlg .tlmg $p
- # wallpaper frame; see make_widgets
+ # wallpaper frame; see populate_main
pack [ttk::frame .tlmg.bg] -fill both -expand 1
ppack [ttk::frame .tlmg.tx] -in .tlmg.bg -side top -fill both -expand 1
pack [ttk::scrollbar .tlmg.tx.scroll -command ".tlmg.tx.txt yview"] \
@@ -199,27 +128,22 @@
# buttons
pack [ttk::frame .tlmg.bts] -in .tlmg.bg -side bottom -fill x
if {$type eq "ok" || $type eq "okcancel"} {
- ttk::button .tlmg.ok -text "ok" -command \
- {raise $::lms_parent; destroy .tlmg; set ::lms_var "ok"}
+ ttk::button .tlmg.ok -text [__ "ok"] -command "end_dlg \"ok\" .tlmg"
ppack .tlmg.ok -in .tlmg.bts -side right
}
if {$type eq "yesnocancel"} {
- ttk::button .tlmg.yes -text "yes" -command \
- {raise $::lms_parent; destroy .tlmg; set::lms_var "yes"}
+ ttk::button .tlmg.yes -text [__ "yes"] -command "end_dlg \"yes\" .tlmg"
ppack .tlmg.yes -in .tlmg.bts -side right
- ttk::button .tlmg.no -text "no" -command \
- {raise $::lms_parent; destroy .tlmg; set ::lms_var "no"}
+ ttk::button .tlmg.no -text [__ "no"] -command "end_dlg \"no\" .tlmg"
ppack .tlmg.no -in .tlmg.bts -side right
}
if {$type eq "yesnocancel" || $type eq "okcancel"} {
- ttk::button .tlmg.cancel -text "cancel" -command \
- {raise $::lms_parent; destroy .tlmg; set ::lms_var "cancel"}
+ ttk::button .tlmg.cancel -text [__ "cancel"] -command \
+ "end_dlg \"cancel\" .tlmg"
ppack .tlmg.cancel -in .tlmg.bts -side right
}
- place_dlg .tlmg $::lms_parent
- tkwait variable ::lms_var
- return $::lms_var
+ place_dlg .tlmg $p
} ; # long_message
proc any_message {str type {p "."}} {
@@ -242,8 +166,8 @@
### enabling and disabling user interaction
-proc enable_menu_controls {yesno} {
- if {! $yesno} {
+proc enable_menu_controls {y_n} {
+ if {! $y_n} {
. configure -menu .mn_empty
return
}
@@ -267,18 +191,18 @@
}
}; # enable_menu_controls
-proc enable_widgets {yesno} {
+proc enable_widgets {y_n} {
# This proc should cover all active interface elements of the main window.
# But if actions are initiated via a dialog, the main window can be
- # deactivated simply by a grab and focus on the dialog.
- enable_menu_controls $yesno
+ # deactivated by a grab and focus on the dialog instead.
+ enable_menu_controls $y_n
- if $yesno {
+ if $y_n {
set st !disabled
- set ::busy "IDLE"
+ set ::busy [__ "IDLE"]
} else {
set st disabled
- set ::busy "BUSY"
+ set ::busy [__ "BUSY"]
}
# command entry
@@ -322,10 +246,8 @@
regexp {^.*[\\/]([^\\/\.]*)(?:\....)?$} $progname dummy progname
set procid [pid]
-# package repository (no suport for a one-off repository switch)
-set repo ""
-# while selecting another repo:
-set new_repo ""
+# package repositories
+array unset repos
# mirrors: dict of dicts of lists of urls per country per continent
set mirrors {}
@@ -333,7 +255,11 @@
# dict of (local and global) package dicts
set pkgs [dict create]
-set have_remote 0 ; # remote packages info not loaded
+if {$::tcl_platform(platform) ne "windows"} {
+ set ::platforms [dict create]
+}
+
+set have_remote 0 ; # remote packages info not yet loaded
set need_update_tlmgr 0
set n_updates 0
set tlshell_updatable 0
@@ -352,8 +278,11 @@
##### handling tlmgr via pipe and stderr tempfile #####################
set prmpt "tlmgr>"
-set busy "BUSY"
+set busy [__ "BUSY"]
+# copy logs to log window yes/no
+set show_output 0
+
# about [chan] gets:
# if a second parameter, in this case l, is supplied
# then this variable receives the result, with EOL stripped,
@@ -394,6 +323,7 @@
tk_messageBox -message [get_stacktrace]
exit
}
+ set ::perlpid [pid $::tlshl]
do_debug "done opening tlmgr"
set ::err [open $::err_file r]
chan configure $::tlshl -buffering line -blocking 0
@@ -404,6 +334,7 @@
proc close_tlmgr {} {
catch {chan close $::tlshl}
catch {chan close $::err}
+ set ::perlpid 0
}; # close_tlmgr
# read a line of tlmgr output
@@ -414,7 +345,7 @@
if {([catch {chan gets $::tlshl l} len] || [chan eof $::tlshl])} {
#do_debug "read_line: failing to read "
puts stderr "Read failure; tlmgr command was $::last_cmd"
- catch {chan close $::tlshl}
+ if {! [catch {chan close $::tlshl}]} {set ::perlpid 0}
# note. the right way to terminate is terminating the GUI shell.
# This closes stdin of tlmgr shell.
err_exit
@@ -426,16 +357,19 @@
enable_widgets 1 ; # this may have to be redone later
# catch up with stderr
read_err_tempfile
- if {$::pipe_cb ne ""} {
+ if $::show_output {
do_debug "prompt found, $l"
- $::pipe_cb "finish"
+ log_widget_finish
}
# for vwait:
set ::done_waiting 1
+ set ::show_output 0
} else {
# regular output
lappend ::out_log $l
- if {$::pipe_cb ne ""} {$::pipe_cb "line" "$l"}
+ if $::show_output {
+ log_widget_add $l
+ }
}
}
} ; # read_line
@@ -458,20 +392,47 @@
}
} ; # show_err_log
+proc log_widget_init {} {
+ show_logs ; # create the logs dialog
+ .tllg.status configure -text [__ "Running"]
+ .tllg.close configure -state disabled
+}
+
+proc log_widget_add l {
+ .tllg.log.tx configure -state normal
+ .tllg.log.tx insert end "$l\n"
+ if {$::tcl_platform(os) ne "Darwin"} {
+ .tllg.log.tx configure -state disabled
+ }
+}
+
+proc log_widget_finish {} {
+ .tllg.log.tx yview moveto 1
+ .tllg.logs select .tllg.log
+ # error log on top if it contains anything
+ show_err_log
+ if {$::tcl_platform(os) ne "Darwin"} {
+ .tllg.log.tx configure -state disabled
+ }
+ .tllg.status configure -text [__ "Idle"]
+ .tllg.close configure -state !disabled
+}
+
##### running tlmgr commands #####
-# optional callback for run_cmds/read_line:
-set pipe_cb ""
-
# run a list of commands
-proc run_cmds {cmds {cb ""}} {
- set ::pipe_cb $cb
+proc run_cmds {cmds {show 0}} {
+ set ::show_output $show
do_debug "run_cmds \"$cmds\""
if $::ddebug {puts $::flid "\n$cmds"}
enable_widgets 0
set ::out_log {}
set ::err_log {}
- if {$::pipe_cb ne ""} {$::pipe_cb "init"}
+ if $show {
+ show_logs
+ .tllg.status configure -text [__ "Running"]
+ .tllg.close configure -state disabled
+ }
set l [llength $cmds]
for {set i 0} {$i<$l} {incr i} {
set cmd [lindex $cmds $i]
@@ -484,71 +445,19 @@
} ; # run_cmds
# run a single command
-proc run_cmd {cmd {cb ""}} {
- run_cmds [list $cmd] $cb
+proc run_cmd {cmd {show 0}} {
+ run_cmds [list $cmd] $show
} ; # run_cmd
proc run_cmd_waiting {cmd} {
- run_cmd $cmd
+ run_cmd $cmd 0
vwait ::done_waiting
} ; # run_cmd_waiting
-##### callbacks for file events of tlmgr pipe ::tlshl (names *_cb) ####
-
-# callback for reading tlmgr pipe.
-# but maybe we just want a boolean whether or not to write
-# to the logs notebook.
-# consider writing log to file, always or on demand
-
-# In init mode, it is invoked by run_cmds, otherwise by read_line
-
-## template for pipe callback:
-#proc template_cb {mode {l ""}} {
-# if {$mode eq "line"} {
-# # do something
-# } elseif {$mode eq "init"} {
-# # do something
-# } elseif {$mode eq "finish"} {
-# # do something BUT DO NOT TRIGGER ANOTHER EVENT LOOP
-# } else {
-# lappend ::err_log "Illegal call of whatever_cb"
-# err_exit
-# }
-#}
-
-proc log_widget_cb {mode {l ""}} {
- if {$mode eq "line"} {
- .tllg.log.tx configure -state normal
- .tllg.log.tx insert end "$l\n"
- if {$::tcl_platform(os) ne "Darwin"} {
- .tllg.log.tx configure -state disabled
- }
- } elseif {$mode eq "init"} {
- show_logs
- .tllg.status configure -text "Running"
- .tllg.close configure -state disabled
- } elseif {$mode eq "finish"} {
- .tllg.log.tx yview moveto 1
- .tllg.logs select .tllg.log
- # error log on top if it contains anything
- show_err_log
- if {$::tcl_platform(os) ne "Darwin"} {
- .tllg.log.tx configure -state disabled
- }
- .tllg.status configure -text "Idle"
- .tllg.close configure -state !disabled
- # the caller, read_line, will set ::done_waiting after
- # this callback returns from finish mode
- } else {
- lappend ::err_log "Illegal call of log_widget_cb"
- err_exit
- }
-} ; # log_widget_cb
-
##### Handling package info #####
# what invokes what?
-# The main 'globals' are:
+# The main 'globals' are (excepting dicts and arrays):
# ::have_remote is initialized to false. It is set to true by
# get_packages_info_remote, and remains true except temporarily at
@@ -579,7 +488,7 @@
# collect_filtered does not only filter, but also organize the
# information to be displayed. If necessary, it invokes
-# get_packages_info_remote and always invokes display_packes_info.
+# get_packages_info_remote and always invokes display_packages_info.
# It is invoked at initialization, when filtering options change and
# at the end of install-, remove- and update procs.
@@ -616,11 +525,11 @@
# also update displayed status info
if {$::have_remote && $::need_update_tlmgr} {
- .topf.luptodate configure -text "Needs updating"
+ .topf.luptodate configure -text [__ "Needs updating"]
} elseif $::have_remote {
- .topf.luptodate configure -text "Up to date"
+ .topf.luptodate configure -text [__ "Up to date"]
} else {
- .topf.luptodate configure -text "Unknown"
+ .topf.luptodate configure -text [__ "Unknown"]
}
# ... and status of update buttons
enable_menu_controls 1
@@ -764,8 +673,7 @@
if [catch {run_cmd_waiting \
"info --data name,localrev,remoterev,cat-version,category,shortdesc"}] {
do_debug [get_stacktrace]
- tk_messageBox -message \
- "Repository $::repo unavailable. Please choose another one."
+ tk_messageBox -message [__ "A configured repository is unavailable."]
return 0
}
set re {^([^,]+),([0-9]+),([0-9]+),([^,]*),([^,]*),(.*)$}
@@ -814,31 +722,18 @@
update_globals
} ; # update_local_revnumbers
-##### Dialogs and their supporting procs ##############################
+##### Logs notebook ##############################
-# look at dialog.tcl, part of Tk itself, how to implement dialog-type behavior
-
-# So far:
-# - logs notebook,
-# - maybe a toplevel for restoring packages from backup, and
-# - a toplevel for picking a different local or remote repository.
-
-##### logs notebook #####
-
-# if invoked via log_widget_cb init, it tracks progress of a tlmgr command.
-# log_widget_cb will temporarily disable the close button
-# and set .tllg.status to busy.
+# if invoked via run_cmds, it tracks progress of (a) tlmgr command(s).
+# run_cmds will temporarily disable the close button
+# and set .tllg.status to busy via enable_widgets 0.
# otherwise, it shows the output of the last completed (list of) command(s).
# Note that run_cmds clears ::out_log and ::err_log, but not ::dbg_log.
proc show_logs {} {
- toplevel .tllg -class Dialog
- wm withdraw .tllg
- set p [winfo toplevel [winfo parent .tllg]]
- wm transient .tllg $p
+ create_dlg .tllg .
wm title .tllg Logs
- if $::plain_unix {wm attributes .tllg -type dialog}
# wallpaper
pack [ttk::frame .tllg.bg] -fill both -expand 1
@@ -881,13 +776,15 @@
foreach l $::dbg_log {
.tllg.dbg.tx insert end "$l\n"
}
- if {$::tcl_platform(os) ne "Darwin"} {.tllg.dbg.tx configure -state disabled}
+ if {$::tcl_platform(os) ne "Darwin"} {
+ .tllg.dbg.tx configure -state disabled
+ }
.tllg.dbg.tx yview moveto 1
}
pack [ttk::notebook .tllg.logs] -in .tllg.bg -side top -fill both -expand 1
- .tllg.logs add .tllg.log -text "Output"
- .tllg.logs add .tllg.err -text "Errors"
+ .tllg.logs add .tllg.log -text [__ "Output"]
+ .tllg.logs add .tllg.err -text [__ "Errors"]
if $::ddebug {
.tllg.logs add .tllg.dbg -text "Debug"
raise .tllg.dbg .tllg.logs
@@ -896,46 +793,32 @@
raise .tllg.log .tllg.logs
pack [ttk::frame .tllg.bottom] -in .tllg.bg -side bottom -fill x
- ttk::button .tllg.close -text close -command {
- set p [winfo toplevel [winfo parent .tllg]]
- if {$p eq ""} {set p "."}
- raise $p; destroy .tllg}
+ ttk::button .tllg.close -text [__ "Close"] -command {end_dlg 0 .tllg}
ppack .tllg.close -in .tllg.bottom -side right -anchor e
ppack [ttk::label .tllg.status -anchor w] -in .tllg.bottom -side left
- place_dlg .tllg $p
+ place_dlg .tllg .
wm resizable .tllg 1 1
} ; # show_logs
-##### repositories #####
+##### repositories ###############################################
-proc get_repo {} {
- run_cmd_waiting "option repository"
- # this returns the configured repository.
- # for now, do not support a temporary change.
- set re {repository\t(.*)$}
- foreach l $::out_log {
- if [regexp $re $l m ::repo] break
- }
-} ; # get_repo
-
-proc is_repo_local {r} {
- set db [file join $r "tlpkg/texlive.tlpdb"]
- return [file exists $db]
-}
-
### mirrors
-proc edit_name {n} {
+# turn name into a string suitable for a widget name
+proc mangle_name {n} {
set n [string tolower $n]
set n [string map {" " "_"} $n]
return $n
-} ; # edit_name
+} ; # mangle_name
set mirrors [dict create]
proc read_mirrors {} {
if [catch {open [file join [exec kpsewhich -var-value SELFAUTOPARENT] \
- "tlpkg/installer/ctan-mirrors.pl"] r} fm] {return 0}
+ "tlpkg/installer/ctan-mirrors.pl"] r} fm] {
+ do_debug "cannot open mirror list"
+ return 0
+ }
set re_geo {^\s*'([^']+)' => \{\s*$}
set re_url {^\s*'(.*)' => ([0-9]+)}
set re_clo {^\s*\},?\s*$}
@@ -1021,38 +904,142 @@
if {! $ok} {do_debug $msg}
} ; # read_mirrors
-proc find_local_repo {} {
- if [is_repo_local $::new_repo] {
- set inidir $::new_repo
- } elseif [is_repo_local $::repo] {
- set inidir $::repo
- } else {
- set inidir $::env(HOME) ; # HOME also ok for windows
+proc pick_local_repo {} {
+ set tail "tlpkg/texlive.tlpdb"
+ set nrep [.tlr.cur cget -text]
+ if {! [file exists [file join $nrep $tail]]} {
+ # not local, try originally configured $::repos(main)
+ set nrep $::repos(main)
+ if {! [file exists [file join $nrep $tail]]} {
+ # again, not local
+ set nrep $::env(HOME) ; # HOME also o.k. for windows
+ }
}
- set ::new_repo ""
while 1 {
- set ::new_repo [tk_chooseDirectory -initialdir $inidir -mustexist 1 \
- -parent .tlr -title "Local repository..."]
- if {$::new_repo ne "" && ! [is_repo_local $::new_repo]} {
- tk_messageBox -message "$::new_repo not a repository" -parent .tlr
- set inidir $::new_repo
- set ::new_repo ""
+ set nrep [browse4dir $nrep .tlr]
+ if {$nrep ne "" && ! [file exists [file join $nrep $tail]]} {
+ tk_messageBox -message [__ "%s not a repository" $nrep] -parent .tlr
continue
} else {
break
}
}
-} ; # find_local_repo
+ if {$nrep ne ""} {
+ .tlr.new delete 0 end
+ .tlr.new insert end $nrep
+ }
+} ; # pick_local_repo
-proc close_repos {} {
- raise .
- destroy .tlr
- set ::repo $::new_repo
- if {$::tcl_platform(platform) eq "windows"} {
- set ::repo [string map {\\ /} $::repo]
+# what is wrong with this version?
+#proc get_repos_from_tlmgr {} {
+# array unset ::repos
+# run_cmd_waiting "repository list"
+# # set re0 {^\s+([^\s\(][^\(]*[^\s\(])\s+\(([^\)]+)\)$}
+# set re0 {^[ \t]+(\S.*\S)[ \t]+\(([^\)]+)\)$}
+# set re1 {^[ \t]+(\S.*\S)$}
+# foreach l $::out_log {
+# if [regexp $re0 $l dum r t] {
+# # repository with tag
+# puts "$l\n$dum\nrep $r tag $t"
+# set ::repos($t) $r
+# } elseif [regexp $re1 $l dum r] {
+# # repository without tag, assign repository itself as tag
+# puts "rep $r"
+# set ::repos($r) $r
+# }
+# }
+# if {[llength [array names ::repos]] == 1} {
+# set n [lindex [array names ::repos] 0]
+# if {$n ne "main"} {
+# set ::repos(main) $::repos($n)
+# array unset ::repos $n
+# }
+# }
+#} ; # get_repos_from_tlmgr
+
+proc get_repos_from_tlmgr {} {
+ array unset ::repos
+ run_cmd_waiting "option repository"
+ set rps ""
+ foreach l $::out_log {
+ if [regexp {repository\t(.*)$} $l dum rps] break
}
- set ::new_repo ""
- run_cmd_waiting "option repository $::repo"
+ if {$rps ne ""} {
+ set reps [split $rps " "]
+ set nr [llength $reps]
+ foreach rp $reps {
+ # decode spaces and %
+ #set rp [string map {"%20" " "} $rp]
+ #set rp [string map {"%25" "%"} $rp]
+ if {! [regexp {^(.+)#(.+)$} $rp dum r t]} {
+ # no tag; use repository as its own tag
+ set r $rp
+ set t $rp
+ }
+ if {$nr == 1} {
+ set t "main"
+ }
+ set ::repos($t) $r
+ }
+ if {"main" ni [array names ::repos]} {
+ array unset ::repos
+ }
+ }
+}; # get_repos_from_tlmgr
+
+proc set_repos_in_tlmgr {} {
+ # tlmgr has no command to replace a single repository;
+ # we need to compose opt_location ourselves from $::repos.
+ set nr [llength [array names ::repos]]
+ set opt_repos ""
+ set rp ""
+ foreach nm [array names ::repos] {
+ if {$nr==1} {
+ if {$nm ne "main"} {
+ err_exit "Internal error"
+ } else {
+ set rp $::repos(main)
+ }
+ } else {
+ if {$nm eq $::repos($nm)} {
+ set rp $nm
+ } else {
+ set rp $::repos($nm)
+ append rp "#$nm"
+ }
+ }
+ # for now, ignore the possibility of spaces in paths;
+ # I think tlmgr has bugs there
+ #set rp [string map {"%" "%25"} $rp]
+ #set rp [string map {" " "%20"} $rp]
+ append opt_repos " $rp"
+ }
+ # puts "repository set [string range $opt_repos 1 end]"
+ run_cmd_waiting "repository set [string range $opt_repos 1 end]"
+}; # set_repos_in_tlmgr
+
+proc print_repos {} {
+ set nms [array names ::repos]
+ set c [llength $nms]
+ if {$c <= 0} {
+ return ""
+ } elseif {$c == 1} {
+ set nm [lindex $nms 0]
+ return $::repos($nm)
+ } else {
+ set s [__ "multiple repositories"]
+ set s "($s)"
+ foreach nm $nms {
+ append s "\n$::repos($nm)"
+ if {$nm ne $::repos($nm)} {append s " ($nm)"}
+ }
+ return $s
+ }
+}
+
+proc repos_commit {} {
+ .topf.lrepos configure -text [print_repos]
+ set_repos_in_tlmgr
close_tlmgr
start_tlmgr
# reload remote package information
@@ -1059,12 +1046,11 @@
set ::have_remote 0
get_packages_info_remote
collect_filtered
-} ; # close_repos
+} ; # repos_commit
-proc repositories {} {
+# main repository dialog
+proc main_repository {} {
- set ::new_repo $::repo
-
# dialog toplevel with
# - popup menu of mirrors (parse tlpkg/installer/ctan-mirrors.pl)
# - text entry box
@@ -1071,13 +1057,10 @@
# - directory browser button
# - ok and cancel buttons
- toplevel .tlr -class Dialog
- wm withdraw .tlr
- wm transient .tlr .
- wm title .tlr "Repositories"
- if $::plain_unix {wm attributes .tlr -type dialog}
+ create_dlg .tlr .
+ wm title .tlr [__ "Main Repository"]
- # wallpaper frame; see make_widgets
+ # wallpaper frame; see populate_main
pack [ttk::frame .tlr.bg] -expand 1 -fill x
pack [ttk::frame .tlr.info] -in .tlr.bg -fill x
@@ -1086,78 +1069,155 @@
# current repository
incr row
- pgrid [ttk::label .tlr.lcur -text "Current:"] \
+ pgrid [ttk::label .tlr.lcur -text [__ "Current:"]] \
-in .tlr.info -row $row -column 0 -sticky w
- pgrid [ttk::label .tlr.cur -textvariable ::repo] \
+ pgrid [ttk::label .tlr.cur -text $::repos(main)] \
-in .tlr.info -row 0 -column 1 -sticky w
# new repository
incr row
- pgrid [ttk::label .tlr.lnew -text "New"] \
+ pgrid [ttk::label .tlr.lnew -text [__ "New"]] \
-in .tlr.info -row $row -column 0 -sticky w
- pgrid [ttk::entry .tlr.new -textvariable ::new_repo -width 40] \
+ pgrid [ttk::entry .tlr.new -width 40] \
-in .tlr.info -row $row -column 1 -columnspan 2 -sticky w
### three ways to specify a repository ###
pack [ttk::frame .tlr.mirbuttons] -in .tlr.bg -fill x
# default remote repository
- ttk::button .tlr.ctan -text "Any CTAN mirror" \
- -command {set ::new_repo "http://mirror.ctan.org/systems/texlive/tlnet"}
+ ttk::button .tlr.ctan -text [__ "Any CTAN mirror"] -command {
+ .tlr.new delete 0 end
+ .tlr.new insert end $::any_mirror
+ }
ppack .tlr.ctan -in .tlr.mirbuttons -side left -fill x
# freshly create a cascading mirror dropdown menu
destroy .tlr.mir.m
if {[dict size $::mirrors] == 0} read_mirrors
+ do_debug "[dict size $::mirrors] mirrors"
if {[dict size $::mirrors] > 0} {
- ttk::menubutton .tlr.mir -text "Specific mirror..." -direction below \
- -menu .tlr.mir.m
+ ttk::menubutton .tlr.mir -text [__ "Specific mirror..."] \
+ -direction below -menu .tlr.mir.m
ppack .tlr.mir -in .tlr.mirbuttons -side left -fill x
menu .tlr.mir.m
dict for {cont d_cont} $::mirrors {
- set c_ed [edit_name $cont]
+ set c_ed [mangle_name $cont]
menu .tlr.mir.m.$c_ed
.tlr.mir.m add cascade -label $cont -menu .tlr.mir.m.$c_ed
dict for {cntr urls} $d_cont {
- set n_ed [edit_name $cntr]
+ set n_ed [mangle_name $cntr]
menu .tlr.mir.m.$c_ed.$n_ed
.tlr.mir.m.$c_ed add cascade -label $cntr -menu .tlr.mir.m.$c_ed.$n_ed
foreach u $urls {
.tlr.mir.m.$c_ed.$n_ed add command -label $u \
- -command "set ::new_repo $u"
+ -command ".tlr.new delete 0 end; .tlr.new insert end $u"
}
}
}
}
# local repository
- ttk::button .tlr.browse -text "Local directory..." \
- -command find_local_repo
+ ttk::button .tlr.browse -text [__ "Local directory..."] -command {
+ .tlr.new delete 0 end; .tlr.new insert end [pick_local_repo]}
ppack .tlr.browse -in .tlr.mirbuttons -side left -fill x
- spacing .tlr.bg
-
# two ways to close the dialog
- pack [ttk::frame .tlr.closebuttons] -in .tlr.bg -fill x
- ttk::button .tlr.save -text "Save and Load" -command close_repos
+ pack [ttk::frame .tlr.closebuttons] -pady [list 10 0] -in .tlr.bg -fill x
+ ttk::button .tlr.save -text [__ "Save and Load"] -command {
+ set ::repos(main) [.tlr.new get]
+ repos_commit
+ end_dlg "" .tlr
+ }
ppack .tlr.save -in .tlr.closebuttons -side right
- ttk::button .tlr.abort -text "Abort"\
- -command {raise .; destroy .tlr}
+ ttk::button .tlr.abort -text [__ "Abort"] -command {end_dlg "" .tlr}
ppack .tlr.abort -in .tlr.closebuttons -side right
place_dlg .tlr .
wm resizable .tlr 0 0
-} ; # repositories
+} ; # main_repository
+proc more_repos {} {
+
+ create_dlg .tladr .
+ wm title .tladr [__ "Additional repositories"]
+
+ # wallpaper frame; see populate_main
+ pack [ttk::frame .tladr.bg] -expand 1 -fill x
+
+ set ttl [__ "Additional repositories"]
+ ttk::label .tladr.title -text "$ttl (does nothing yet)" -font bigfont
+ pack .tladr.title -in .tladr.bg -padx 3 -pady 10
+
+ pack [ttk::frame .tladr.tlcf] -in .tladr.bg -anchor w -padx 3 -pady 10
+ ppack [ttk::button .tladr.tlc -text [__ "Add tlcontrib"]] \
+ -in .tladr.tlcf -side left
+ ttk::label .tladr.tlcl -text [__ "Packages which cannot be part of TeX Live"]
+ pack .tladr.tlcl -in .tladr.tlcf -side left
+
+ # treeview with repositories
+ ppack [ttk::frame .tladr.adrf] -in .tladr.bg -fill x -side top
+ ttk::treeview .tladr.reps -columns {url tag} -height 3 -show headings \
+ -selectmode browse -yscrollcommand {.tladr.vsb set}
+ .tladr.reps heading url -text "Url" -anchor w
+ .tladr.reps heading tag -text [__ "Tag (optional)"] -anchor w
+ .tladr.reps column url -width [expr {$::cw * 60}]
+ .tladr.reps column tag -width [expr {$::cw * 15}]
+ grid columnconfigure .tladr.adrf 0 -weight 1
+ ttk::scrollbar .tladr.vsb -orient vertical -command {.tladr.reps yview}
+ incr row
+ grid .tladr.vsb -in .tladr.adrf -row 0 -column 1 -sticky ns
+ grid .tladr.reps -in .tladr.adrf -row 0 -column 0 -sticky news
+ #pack .tladr.reps -in .tladr.adrf -side left -fill both -expand 1
+ foreach nm [array names ::repos] {
+ if {$nm ne "main"} {
+ if {$nm ne $::repos($nm)} {
+ .tladr.reps insert {} end -values [list $::repos($nm) $nm]
+ } else {
+ .tladr.reps insert {} end -values [list $::repos($nm) ""]
+ }
+ }
+ }
+ pack [ttk::frame .tladr.add_del] -in .tladr.bg -fill x -expand 1
+ ppack [ttk::button .tladr.delb -text [__ "Delete"]] \
+ -in .tladr.add_del -side left -fill x
+ ppack [ttk::button .tladr.addb -text [__ "Add"]] \
+ -in .tladr.add_del -side right -fill x
+
+ # pinning
+
+ ppack [ttk::frame .tladr.pinf] -in .tladr.bg -fill x -expand 1
+ ttk::label .tladr.pinl -text "Pinning" -font bfont
+ ttk::scrollbar .tladr.pinvbs -orient vertical -command {.tladr.pintx yview}
+ ttk::scrollbar .tladr.pinhbs -orient horizontal -command {.tladr.pintx xview}
+ text .tladr.pintx -height 3 -wrap none \
+ -yscrollcommand {.tladr.pinvbs set} -xscrollcommand {.tladr.pinhbs set}
+ grid columnconfigure .tladr.pinf 0 -weight 1
+ grid .tladr.pinl -in .tladr.pinf -row 0 -column 0 -sticky w
+ grid .tladr.pinhbs -in .tladr.pinf -row 2 -column 0 -sticky ew
+ grid .tladr.pinvbs -in .tladr.pinf -row 1 -column 1 -sticky ns
+ grid .tladr.pintx -in .tladr.pinf -row 1 -column 0 -sticky news
+
+ pack [ttk::frame .tladr.cancelok] \
+ -in .tladr.bg -fill x -pady [list 10 0] -side bottom
+ ppack [ttk::button .tladr.ok -text [__ "Ok"]] -in .tladr.cancelok -side right
+ ppack [ttk::button .tladr.cancel -text [__ "Cancel"]] \
+ -in .tladr.cancelok -side right
+ .tladr.ok configure -command {end_dlg "" .tladr}
+ .tladr.cancel configure -command {end_dlg "" .tladr}
+
+ place_dlg .tladr
+}
+
### platforms
if {$::tcl_platform(platform) ne "windows"} {
- set ::platforms {}
+ # the ::platforms dict has been created earlier
proc toggle_pl_marked {pl cl} {
# toggle_pl_marked is triggered by a mouse click only in column #1.
- # 'fut' should get updated in ::platforms and in .tlpl.pl.
+ # 'fut'[ure] should get updated in ::platforms _and_ in .tlpl.pl.
if {$cl ne "#1"} return
if {$pl eq $::our_platform} {
- tk_messageBox -message "Cannot remove own platform $::our_platform" \
+ tk_messageBox -message \
+ [__ "Cannot remove own platform %s" $::our_platform] \
-parent .tlpl
return
}
@@ -1179,9 +1239,7 @@
}
} ; # toggle_pl_marked
- proc platform_do {} {
- raise .
- destroy .tlpl
+ proc platforms_commit {} {
set pl_add {}
set pl_remove {}
dict for {p pd} $::platforms {
@@ -1205,14 +1263,15 @@
append cmd [join $pl_remove " "]
lappend cmds $cmd
}
- run_cmds $cmds log_widget_cb
+ run_cmds $cmds 1
vwait ::done_waiting
update_local_revnumbers
collect_filtered
- } ; # platform_do
+ } ; # platforms_do
- proc platform_select {} {
+ # the platforms dialog
+ proc platforms_select {} {
run_cmd_waiting "platform list"
set ::platforms {}
foreach l $::out_log {
@@ -1226,17 +1285,14 @@
dict set ::platforms $p "fut" 1
}
}
- destroy .tlpl
- toplevel .tlpl -class Dialog
- wm withdraw .tlpl
- wm transient .tlpl .
- wm title .tlpl "Platforms"
+ create_dlg .tlpl
+ wm title .tlpl [__ "Platforms"]
if $::plain_unix {wm attributes .tlpl -type dialog}
# wallpaper frame
pack [ttk::frame .tlpl.bg] -expand 1 -fill both
- # platforms treeview
+ # platforms treeview; do we need a scrollbar?
pack [ttk::frame .tlpl.fpl] -in .tlpl.bg -fill both -expand 1
ttk::treeview .tlpl.pl -columns {sup plat} -show headings \
-height [dict size $::platforms] ; # -yscrollcommand {.tlpl.plsb set}
@@ -1244,10 +1300,9 @@
#ttk::scrollbar .tlpl.plsb -orient vertical \
# -command {.tlpl.pl yview}
#ppack .tlpl.plsb -in .tlpl.fpl -side right -fill y -expand 1
- foreach col {sup plat} nm {"" "Platform"} {
- .tlpl.pl heading $col -text $nm -anchor w
- }
- .tlpl.pl column sup -width [expr {$::cw * 6}]
+ #.tlpl.pl heading sup -text ""
+ .tlpl.pl column sup -width [expr {$::cw * 8}]
+ .tlpl.pl heading plat -text [__ "platform"] -anchor w
.tlpl.pl column plat -width [expr {$::cw * 20}]
dict for {p mks} $::platforms {
.tlpl.pl insert {} end -id $p -values \
@@ -1265,9 +1320,11 @@
# buttons
pack [ttk::frame .tlpl.but] -in .tlpl.bg -fill x
- ttk::button .tlpl.do -text "Apply and close" -command platform_do
- ttk::button .tlpl.dont -text "Close" -command \
- {raise .; destroy .tlpl}
+ ttk::button .tlpl.do -text [__ "Apply and close"] -command {
+ platforms_commit; end_dlg "" .tlpl
+ }
+ ttk::button .tlpl.dont -text [__ "Close"] -command \
+ {end_dlg "" .tlpl}
ppack .tlpl.do -in .tlpl.but -side right
.tlpl.do configure -state disabled
ppack .tlpl.dont -in .tlpl.but -side right
@@ -1274,7 +1331,7 @@
place_dlg .tlpl .
wm resizable .tlpl 0 0
- } ; # platform_select
+ } ; # platforms_select
} ; # $::tcl_platform(platform) ne "windows"
@@ -1287,8 +1344,8 @@
# dictionary of backups, with mapping to list of available revisions
set bks {}
-proc enable_restore {yesno} {
- set st [expr {$yesno ? !disabled : disabled}]
+proc enable_restore {y_n} {
+ set st [expr {$y_n ? !disabled : disabled}]
.tlbk.bklist state $st
.tlbk.all configure -state $st
.tlbk.done configure -state $st
@@ -1296,8 +1353,7 @@
proc finish_restore {} {
vwait ::done_waiting
- # now log_widget_cb should have done finish mode
- # and re-enabled its close button.
+ # now log_widget_finish should have run and re-enabled its close button.
# We won't wait for the log toplevel to close, but we will
# update the packages display in the main window.
update_local_revnumbers
@@ -1305,10 +1361,8 @@
} ; # finish_restore
proc restore_all {} {
- run_cmd "restore --force --all" log_widget_cb
+ run_cmd "restore --force --all" 1
finish_restore
- raise .
- destroy .tlbk
} ; # restore_all
proc restore_this {} {
@@ -1322,12 +1376,11 @@
if {$id ne {}} {set p [.tlbk.bklist set $id pkg]}
}
if {$p eq {}} return
- set ans [tk_messageBox -message "Restore $p to revision $r?" \
+ set ans [tk_messageBox -message [__ "Restore %s to revision %s?" $p $r] \
-type okcancel -parent .tlbk]
if {$ans ne {ok}} return
- run_cmd "restore --force $p $r" log_widget_cb
+ run_cmd "restore --force $p $r" 1
finish_restore
- # tkwait window .tllg
} ; # restore_this
proc bklist_callback_click {x y} {
@@ -1346,7 +1399,7 @@
if [regexp $re $l m abk] break
}
if {$abk == 0} {
- tk_messageBox -message "No backups configured"
+ tk_messageBox -message [__ "No backups configured"]
return
}
run_cmd_waiting "option backupdir"
@@ -1356,12 +1409,12 @@
if [regexp $re $l m bdir] break
}
if {$bdir eq ""} {
- tk_messageBox -message "No backup directory defined"
+ tk_messageBox -message [__ "No backup directory defined"]
return
}
set bdir [file join [exec kpsewhich -var-value SELFAUTOPARENT] $bdir]
if {! [file isdirectory $bdir]} {
- tk_messageBox -message "Backup directory $bdir does not exist"
+ tk_messageBox -message [__ "Backup directory %s does not exist" $bdir]
return
}
set pwd0 [pwd]
@@ -1368,7 +1421,7 @@
cd $bdir
set backups [lsort [glob *.tar.xz]]
if {[llength $backups] == 0} {
- tk_messageBox -message "No backups found in $bdir"
+ tk_messageBox -message [__ "No backups found in $bdir"]
return
}
# dictionary of backups; package => list of available revisions
@@ -1384,7 +1437,7 @@
}
}
if {[llength [dict keys $::bks]] == 0} {
- tk_messageBox -message "No packages in backup directory $bdir"
+ tk_messageBox -message [__ "No packages in backup directory %s" $bdir]
return
}
# invert sort order of revisions for each package
@@ -1394,10 +1447,10 @@
toplevel .tlbk -class Dialog
wm withdraw .tlbk
wm transient .tlbk .
- wm title .tlbk "Restore from backup"
+ wm title .tlbk [__ "Restore from backup"]
if $::plain_unix {wm attributes .tlbk -type dialog}
- # wallpaper frame; see make_widgets
+ # wallpaper frame; see populate_main
pack [ttk::frame .tlbk.bg] -expand 1 -fill x
# the displayed list of backed-up packages
@@ -1410,9 +1463,9 @@
pack [ttk::scrollbar .tlbk.bkvsb -orient vertical -command \
{.tlbk.bklist yview}] -in .tlbk.fbk -side right -fill y
- foreach col {"pkg" "rev"} nm {"Package" "Revision"} {
- .tlbk.bklist heading $col -text $nm -anchor w
- }
+ .tlbk.bklist heading "pkg" -text [__ "Package"] -anchor w
+ .tlbk.bklist heading "rev" -text [__ "Revision"] -anchor w
+
.tlbk.bklist column "#0" -width [expr {$::cw * 2}]
.tlbk.bklist column "pkg" -width [expr {$::cw * 25}]
.tlbk.bklist column "rev" -width [expr {$::cw * 12}]
@@ -1452,13 +1505,14 @@
# frame with buttons
pack [ttk::frame .tlbk.fbut] -in .tlbk.bg -side bottom -fill x
- ppack [ttk::button .tlbk.all -text "Restore all" -command restore_all] \
+ ppack [ttk::button .tlbk.all -text [__ "Restore all"] -command restore_all] \
-in .tlbk.fbut -side right
- ppack [ttk::button .tlbk.done -text "Close" \
- -command {raise .; destroy .tlbk}] -in .tlbk.fbut -side right
+ ppack [ttk::button .tlbk.done -text [__ "Close"] -command {
+ end_dlg "" .tlbk}] -in .tlbk.fbut -side right
place_dlg .tlbk .
wm resizable .tlbk 0 0
+ tkwait .tlbk
} ; # restore_backups_dialog
} ; # if $::do_restore
@@ -1469,10 +1523,10 @@
proc update_tlmgr {} {
if {! $::need_update_tlmgr} {
- tk_messageBox -message "Nothing to do!"
+ tk_messageBox -message [__ "Nothing to do!"]
return
}
- run_cmd "update --self" log_widget_cb
+ run_cmd "update --self" 1
vwait ::done_waiting
# tlmgr restarts itself automatically
update_local_revnumbers
@@ -1481,13 +1535,13 @@
proc update_all {} {
if $::need_update_tlmgr {
- tk_messageBox -message "Update self first!"
+ tk_messageBox -message [__ "Update self first!"]
return
} elseif {! $::n_updates} {
- tk_messageBox -message "Nothing to do!"
+ tk_messageBox -message [__ "Nothing to do!"]
return
}
- run_cmd "update --all" log_widget_cb
+ run_cmd "update --all" 1
vwait ::done_waiting
update_local_revnumbers
collect_filtered
@@ -1523,7 +1577,7 @@
}
}
if {[llength $todo] == 0} {
- tk_messageBox -message "Nothing to do!" -type ok -icon info
+ tk_messageBox -message [__ "Nothing to do!"] -type ok -icon info
return
}
run_cmd_waiting "install --dry-run $todo"
@@ -1537,13 +1591,13 @@
}
if {[llength $deps] > 0} {
set ans [any_message \
- "Also installing dependencies\n\n$deps.\n\nContinue?" "okcancel"]
+ [__ "Also installing dependencies\n\n$deps.\n\nContinue?"] "okcancel"]
if {$ans eq "cancel"} return
}
- run_cmd "install $todo" log_widget_cb
+ run_cmd "install $todo" 1
vwait ::done_waiting
if {[llength $pre_installed] > 0} {
- lappend ::err_log "Already installed: $pre_installed"
+ lappend ::err_log [__ "Already installed: %s" $pre_installed]
show_err_log
}
update_local_revnumbers
@@ -1570,7 +1624,7 @@
}
}
if {[llength $todo] == 0} {
- tk_messageBox -message "Nothing to do!" -type ok -icon info
+ tk_messageBox -message [__ "Nothing to do!"] -type ok -icon info
return
}
run_cmd_waiting "update --dry-run $todo"
@@ -1583,11 +1637,11 @@
}
}
if {[llength $deps] > 0} {
- set ans [any_message "Also updating dependencies\n\n$deps?" \
+ set ans [any_message [__ "Also updating dependencies\n\n%s?" $deps] \
"yesnocancel"]
switch $ans {
"cancel" return
- "yes" {run_cmd "update $todo" log_widget_cb}
+ "yes" {run_cmd "update $todo"} 1
"no" {
set deps {}
run_cmd_waiting "update --dry-run --no-depends $todo"
@@ -1598,22 +1652,22 @@
}
if {[llength $deps] > 0} {
set ans [any_message \
- "Updating hard dependencies $deps anyway. Continue?" \
+ [__ "Updating hard dependencies %s anyway. Continue?" $deps] \
"okcancel"]
if {$ans eq "cancel"} return
}
- run_cmd "update --no-depends $todo" log_widget_cb
+ run_cmd "update --no-depends $todo" 1
}
}
} else {
- run_cmd "update $todo" log_widget_cb
+ run_cmd "update $todo" 1
}
vwait ::done_waiting
if {[llength $not_inst] > 0} {
- lappend ::err_log "Skipped because not installed: $not_inst"
+ lappend ::err_log [__ "Skipped because not installed: %s" $not_inst]
}
if {[llength $uptodate] > 0} {
- lappend ::err_log "Skipped because already up to date: $uptodate"
+ lappend ::err_log [__ "Skipped because already up to date: %s" $uptodate]
}
if {[llength $not_inst] > 0 || [llength $uptodate] > 0} {
show_err_log
@@ -1644,15 +1698,15 @@
}
}
if {[llength $todo] == 0} {
- tk_messageBox -message "Nothing to do!" -type ok -icon info
+ tk_messageBox -message [__ "Nothing to do!"] -type ok -icon info
return
}
if {[llength $deps] > 0} {
- set ans [any_message "Also remove dependencies\n\n$deps?" \
+ set ans [any_message [__ "Also remove dependencies\n\n%s?" $deps] \
"yesnocancel"]
switch $ans {
"cancel" return
- "yes" {run_cmd "remove $todo" log_widget_cb}
+ "yes" {run_cmd "remove $todo" 1}
"no" {
set deps {}
run_cmd_waiting "remove --dry-run --no-depends $todo"
@@ -1663,15 +1717,15 @@
}
if {[llength $deps] > 0} {
set ans [any_message \
- "Removing hard dependencies $deps anyway. Continue?" \
+ [__ "Removing hard dependencies %s anyway. Continue?" $deps] \
"okcancel"]
if {$ans eq "cancel"} return
}
- run_cmd "remove --no-depends $todo" log_widget_cb
+ run_cmd "remove --no-depends $todo" 1
}
}
} else {
- run_cmd "remove $todo" log_widget_cb
+ run_cmd "remove $todo" 1
}
vwait ::done_waiting
if {[llength $not_inst] > 0} {
@@ -1694,7 +1748,7 @@
if {$cmd eq ""} return
do_debug $cmd
.ent.e delete 0 end
- run_cmd $cmd log_widget_cb
+ run_cmd $cmd 1
}
proc restart_self {} {
@@ -1711,8 +1765,8 @@
destroy .
} ; # restart_self
-proc toggle_marked {itm cl} {
- # toggle_marked is triggered by a mouse click only in column #1.
+proc toggle_marked_pkg {itm cl} {
+ # toggle_marked_pkg is triggered by a mouse click only in column #1.
# 'marked' should get updated in ::pkgs, ::filtered and in .pkglist.
if {$cl ne "#1"} return
@@ -1722,7 +1776,7 @@
set m [mark_sym $mrk]
dict set ::filtered $itm [lreplace [dict get $::filtered $itm] 0 0 $m]
.pkglist set $itm mk $m
-} ; # toggle_marked
+} ; # toggle_marked_pkg
proc mark_all {mrk} {
foreach nm [dict keys $::pkgs] {
@@ -1756,20 +1810,24 @@
set lr [dict get $::pkgs [.pkglist focus] "localrev"]
set rr [dict get $::pkgs [.pkglist focus] "remoterev"]
.pkg_popup delete 0 end
- .pkg_popup add command -label "Info" -command \
- {run_cmd "info [.pkglist focus]" log_widget_cb; \
- vwait ::done_waiting}
+
+ .pkg_popup add command -label [__ "Info"] -command {
+ run_cmd "info [.pkglist focus]" 1; vwait ::done_waiting
+ }
if {$::have_remote && ! $::need_update_tlmgr && $rr > 0 && $lr == 0} {
- .pkg_popup add command -label "Install" -command \
- {install_pkgs "focus"}
+ .pkg_popup add command -label [__ "Install"] -command {
+ install_pkgs "focus"
+ }
}
if {$::have_remote && ! $::need_update_tlmgr && $lr > 0 && $rr > $lr} {
- .pkg_popup add command -label "Update" -command \
- {update_pkgs "focus"}
+ .pkg_popup add command -label [__ "Update"] -command {
+ update_pkgs "focus"
+ }
}
if {$lr > 0} {
- .pkg_popup add command -label "Remove" -command \
- {remove_pkgs "focus"}
+ .pkg_popup add command -label [__ "Remove"] -command {
+ remove_pkgs "focus"
+ }
}
.pkg_popup post [expr {$X - 2}] [expr {$Y - 2}]
focus .pkg_popup
@@ -1776,7 +1834,7 @@
} ; # do_package_popup_menu
proc set_paper {p} {
- run_cmd "paper paper $p" log_widget_cb
+ run_cmd "paper paper $p" 1
}
##### running external commands #####
@@ -1788,11 +1846,11 @@
set l "" ; # will contain the line to be read
if {([catch {chan gets $::capt l} len] || [chan eof $::capt])} {
catch {chan close $::capt}
- log_widget_cb "finish"
+ log_widget_finish
set ::done_waiting 1
} elseif {$len >= 0} {
lappend ::out_log $l
- log_widget_cb "line" $l
+ log_widget_add $l
}
}; # read_capt
@@ -1808,12 +1866,12 @@
}
chan configure $::capt -buffering line -blocking 0
chan event $::capt readable read_capt
- log_widget_cb "init"
+ log_widget_init
}
##### main window #####
-proc make_widgets {} {
+proc populate_main {} {
wm title . "$::progname $::procid"
@@ -1824,7 +1882,7 @@
# the "File" cascade should ensure that the dummy menu
# occupies the same vertical space as the real menu.
menu .mn_empty
- .mn_empty add cascade -label "File" -menu .mn_empty.file -underline 0
+ .mn_empty add cascade -label [__ "File"] -menu .mn_empty.file -underline 0
if $::plain_unix {
.mn_empty configure -borderwidth 1
.mn_empty configure -background $::default_bg
@@ -1846,52 +1904,56 @@
}
}
- .mn add cascade -label "File" -menu .mn.file -underline 0
+ .mn add cascade -label [__ "File"] -menu .mn.file -underline 0
menu .mn.file
- .mn.file add command -label "Load default repository" \
+ .mn.file add command -label [__ "Load default repository"] \
-command {get_packages_info_remote; collect_filtered}
- .mn.file add command -command {destroy .} -label "Exit" -underline 1
+ .mn.file add command -command {destroy .} -label [__ "Exit"] -underline 1
- # inx: keeping count where needed, i.e. when an entry needs to be referenced
- .mn add cascade -label "Packages" -menu .mn.pkg
+ # inx: keeping count to record indices where needed,
+ # i.e. when an entry needs to be referenced
+ .mn add cascade -label [__ "Packages"] -menu .mn.pkg
menu .mn.pkg
set inx 0
set ::inx_upd_tlmgr $inx
- .mn.pkg add command -label "Update tlmgr" -command update_tlmgr
+ .mn.pkg add command -label [__ "Update tlmgr"] -command update_tlmgr
incr inx
set ::inx_upd_all $inx
- .mn.pkg add command -label "Update all" -command update_all
+ .mn.pkg add command -label [__ "Update all"] -command update_all
incr inx
- .mn.pkg add command -label "Install marked" \
+ .mn.pkg add command -label [__ "Install marked"] \
-command {install_pkgs "marked"}
incr inx
- .mn.pkg add command -label "Update marked" \
+ .mn.pkg add command -label [__ "Update marked"] \
-command {update_pkgs "marked"}
incr inx
- .mn.pkg add command -label "Remove marked" \
+ .mn.pkg add command -label [__ "Remove marked"] \
-command {remove_pkgs "marked"}
if $::do_restore {
- incr inx
- .mn.pkg add command -label "Restore from backup..." \
- -command restore_backups_dialog
+ incr inx
+ .mn.pkg add command -label [__ "Restore from backup..."] \
+ -command restore_backups_dialog
}
- .mn add cascade -label "Actions" -menu .mn.act -underline 0
+ .mn add cascade -label [__ "Actions"] -menu .mn.act -underline 0
menu .mn.act
- .mn.act add command -label "Regenerate filename database" -command \
- {run_external "mktexlsr" "Regenerating filename database..."}
- .mn.act add command -label "Regenerate formats" -command \
- {run_external "fmtutil-sys --all" "Rebuilding formats..."}
- .mn.act add command -label "Regenerate fontmaps" -command \
- {run_external "updmap-sys" "Rebuilding fontmap files..."}
+ .mn.act add command -label [__ "Regenerate filename database"] -command \
+ {run_external "mktexlsr" [__ "Regenerating filename database..."]}
+ .mn.act add command -label [__ "Regenerate formats"] -command \
+ {run_external "fmtutil-sys --all" [__ "Rebuilding formats..."]}
+ .mn.act add command -label [__ "Regenerate fontmaps"] -command \
+ {run_external "updmap-sys" [__ "Rebuilding fontmap files..."]}
- .mn add cascade -label "Options" -menu .mn.opt -underline 0
+ .mn add cascade -label [__ "Options"] -menu .mn.opt -underline 0
menu .mn.opt
set inx 0
- .mn.opt add command -label "Change repository..." \
- -command repositories
+ .mn.opt add command -label [__ "Change main repository"] \
+ -command main_repository
incr inx
- .mn.opt add cascade -label "Paper" -menu .mn.opt.paper
+ .mn.opt add command -label [__ "Additional repositories"] \
+ -command more_repos
+ incr inx
+ .mn.opt add cascade -label [__ "Paper"] -menu .mn.opt.paper
menu .mn.opt.paper
foreach p [list a4 letter] {
.mn.opt.paper add command -label $p -command "set_paper $p"
@@ -1899,10 +1961,10 @@
if {$::tcl_platform(platform) ne "windows"} {
incr inx
set ::inx_platforms $inx
- .mn.opt add command -label "Platforms..." -command platform_select
+ .mn.opt add command -label [__ "Platforms"] -command platforms_select
}
- .mn add cascade -label "Help" -menu .mn.help -underline 0
+ .mn add cascade -label [__ "Help"] -menu .mn.help -underline 0
menu .mn.help
.mn.help add command -command {tk_messageBox -message "Helpless"} \
-label "About"
@@ -1919,47 +1981,45 @@
ttk::frame .topf
pack .topf -in .bg -side top -anchor w
- pgrid [ttk::label .topf.llrepo -text "Default repository" -anchor w] \
- -row 0 -column 0 -sticky w
- pgrid [ttk::label .topf.lrepo -textvariable ::repo] \
- -row 0 -column 1 -sticky w
- pgrid [ttk::label .topf.loaded -text "Not loaded"] \
+ pgrid [ttk::label .topf.llrepo -text [__ "Default repositories"] -anchor w] \
+ -row 0 -column 0 -sticky nw
+ pgrid [ttk::label .topf.lrepos -text ""] \
+ -row 0 -column 1 -sticky nw
+ pgrid [ttk::label .topf.loaded -text [__ "Not loaded"]] \
-row 1 -column 1 -sticky w
- ttk::label .topf.lluptodate -text "TL Manager up to date?" -anchor w
+ ttk::label .topf.lluptodate -text [__ "TL Manager up to date?"] -anchor w
pgrid .topf.lluptodate -row 2 -column 0 -sticky w
- ttk::label .topf.luptodate -text "Unknown" -anchor w
+ ttk::label .topf.luptodate -text [__ "Unknown"] -anchor w
pgrid .topf.luptodate -row 2 -column 1 -sticky w
- pgrid [ttk::label .topf.llcmd -anchor w -text "Last tlmgr command: "] \
+ pgrid [ttk::label .topf.llcmd -anchor w -text [__ "Last tlmgr command:"]] \
-row 3 -column 0 -sticky w
pgrid [ttk::label .topf.lcmd -anchor w -textvariable ::last_cmd] \
-row 3 -column 1 -sticky w
# command entry widget
- spacing .bg
ttk::frame .ent
- ppack [ttk::label .ent.l -text "Type command:"] -side left
+ ppack [ttk::label .ent.l -text [__ "Type command:"]] -side left
ppack [ttk::entry .ent.e -width 40] -side left -padx 3
- ppack [ttk::button .ent.b -text Go -command run_entry] -side left
+ ppack [ttk::button .ent.b -text [__ "Go"] -command run_entry] \
+ -side left
bind .ent.e <Return> run_entry
- pack .ent -in .bg -fill x -side top
+ pack .ent -pady 10 -in .bg -fill x -side top
- spacing .bg
-
# package list
- ttk::label .lpack -text "Package list" -font TkHeadingFont -anchor w
+ ttk::label .lpack -text [__ "Package list"] -font TkHeadingFont -anchor w
ppack .lpack -in .bg -side top -fill x
# controlling package list
ttk::frame .pkfilter
# filter on status: inst, all, upd
- ttk::label .pkfilter.lstat -font TkHeadingFont -text "Status"
- ttk::radiobutton .pkfilter.inst -text Installed -value inst \
+ ttk::label .pkfilter.lstat -font TkHeadingFont -text [__ "Status"]
+ ttk::radiobutton .pkfilter.inst -text [__ "Installed"] -value inst \
-variable ::stat_opt -command collect_filtered
- ttk::radiobutton .pkfilter.alls -text All -value all \
+ ttk::radiobutton .pkfilter.alls -text [__ "All"] -value all \
-variable ::stat_opt -command collect_filtered
- ttk::radiobutton .pkfilter.upd -text Updatable -value upd \
+ ttk::radiobutton .pkfilter.upd -text [__ "Updatable"] -value upd \
-variable ::stat_opt -command collect_filtered
grid .pkfilter.lstat -column 0 -row 0 -sticky w -padx {3 50}
pgrid .pkfilter.inst -column 0 -row 1 -sticky w
@@ -1967,13 +2027,13 @@
pgrid .pkfilter.upd -column 0 -row 3 -sticky w
# filter on detail level: all, coll, schm
- ttk::label .pkfilter.ldtl -font TkHeadingFont -text "Detail >> Global"
- ttk::radiobutton .pkfilter.alld -text All -value all \
+ ttk::label .pkfilter.ldtl -font TkHeadingFont -text [__ "Detail >> Global"]
+ ttk::radiobutton .pkfilter.alld -text [__ All] -value all \
-variable ::dtl_opt -command collect_filtered
- ttk::radiobutton .pkfilter.coll -text "Collections and schemes" -value coll \
+ ttk::radiobutton .pkfilter.coll -text [__ "Collections and schemes"] \
+ -value coll -variable ::dtl_opt -command collect_filtered
+ ttk::radiobutton .pkfilter.schm -text [__ "Only schemes"] -value schm \
-variable ::dtl_opt -command collect_filtered
- ttk::radiobutton .pkfilter.schm -text "Only schemes" -value schm \
- -variable ::dtl_opt -command collect_filtered
pgrid .pkfilter.ldtl -column 1 -row 0 -sticky w
pgrid .pkfilter.alld -column 1 -row 1 -sticky w
pgrid .pkfilter.coll -column 1 -row 2 -sticky w
@@ -1980,9 +2040,9 @@
pgrid .pkfilter.schm -column 1 -row 3 -sticky w
# marks
- grid [ttk::button .mrk_all -text "Mark all" -command {mark_all 1}] \
+ grid [ttk::button .mrk_all -text [__ "Mark all"] -command {mark_all 1}] \
-in .pkfilter -column 2 -row 1 -sticky w -padx {50 3} -pady 3
- grid [ttk::button .mrk_none -text "Mark none" -command {mark_all 0}] \
+ grid [ttk::button .mrk_none -text [__ "Mark none"] -command {mark_all 0}] \
-in .pkfilter -column 2 -row 2 -sticky w -padx {50 3} -pady 3
pack .pkfilter -in .bg -side top -fill x
@@ -1990,11 +2050,10 @@
# search interface
pack [ttk::frame .pksearch] -in .bg -side top -fill x
ppack [ttk::label .pksearch.l \
- -text "Search package names"] \
- -side left
+ -text [__ "Search package names"]] -side left
pack [ttk::entry .pksearch.e -width 30] -side left -padx {3 0} -pady 3
ppack [ttk::checkbutton .pksearch.d -variable ::search_desc \
- -text "Also search short descriptions"] -side left
+ -text [__ "Also search short descriptions"]] -side left
bind .pksearch.e <KeyRelease> display_packages_info
bind .pksearch.d <ButtonRelease> toggle_search_desc
@@ -2004,11 +2063,11 @@
{mk name localrev remoterev shortdesc} \
-show headings -height 8 -selectmode extended \
-xscrollcommand {.pkhsb set} -yscrollcommand {.pkvsb set}
- foreach \
- col {mk name localrev remoterev shortdesc} \
- nm {"" Name "Local Rev. (ver.)" "Remote Rev. (ver.)" Description} {
- .pkglist heading $col -text $nm -anchor w
- }
+ .pkglist heading mk -text "" -anchor w
+ .pkglist heading name -text [__ "Name"] -anchor w
+ .pkglist heading localrev -text [__ "Local Rev. (ver.)"] -anchor w
+ .pkglist heading remoterev -text [__ "Remote Rev. (ver.)"] -anchor w
+ .pkglist heading shortdesc -text [__ "Description"] -anchor w
.pkglist column mk -width [expr {$::cw * 3}]
.pkglist column name -width [expr {$::cw * 25}]
.pkglist column localrev -width [expr {$::cw * 18}]
@@ -2024,11 +2083,11 @@
grid rowconfigure .fpkg 0 -weight 1
# "#1" refers to the first column (with mark symbols)
- bind .pkglist <space> {toggle_marked [.pkglist focus] "#1"}
- bind .pkglist <Return> {toggle_marked [.pkglist focus] "#1"}
+ bind .pkglist <space> {toggle_marked_pkg [.pkglist focus] "#1"}
+ bind .pkglist <Return> {toggle_marked_pkg [.pkglist focus] "#1"}
# only toggle when column is "mk" i.e. #1
- bind .pkglist <ButtonRelease-1> {toggle_marked \
- [.pkglist identify item %x %y] [.pkglist identify column %x %y]}
+ bind .pkglist <ButtonRelease-1> {toggle_marked_pkg [
+ .pkglist identify item %x %y] [.pkglist identify column %x %y]}
menu .pkg_popup ; # entries added on-the-fly
bind .pkglist <<RightClick>> {do_package_popup_menu %x %y %X %Y}
@@ -2040,16 +2099,16 @@
pack [ttk::frame .endbuttons] -in .bg -side bottom -fill x
ttk::label .busy -textvariable ::busy -font TkHeadingFont -anchor w
ppack .busy -in .endbuttons -side left
- ppack [ttk::button .q -text Quit -command {destroy .}] \
+ ppack [ttk::button .q -text [__ Quit] -command {destroy .}] \
-in .endbuttons -side right
- ppack [ttk::button .r -text "Restart self" -command restart_self] \
+ ppack [ttk::button .r -text [__ "Restart self"] -command restart_self] \
-in .endbuttons -side right
- ppack [ttk::button .t -text "Restart tlmgr" \
+ ppack [ttk::button .t -text [__ "Restart tlmgr"] \
-command {close_tlmgr; start_tlmgr}] \
-in .endbuttons -side right
- ttk::button .showlogs -text "Show logs" -command show_logs
+ ttk::button .showlogs -text [__ "Show logs"] -command show_logs
ppack .showlogs -in .endbuttons -side right
-} ; # make_widgets
+} ; # populate_main
##### initialize ######################################################
@@ -2056,9 +2115,9 @@
proc initialize {} {
# seed random numbers
expr {srand([clock seconds])}
- # prepend TL to process searchpath (not needed on windows)
+ # unix: make sure TL comes first on process searchpath
if {$::tcl_platform(platform) ne "windows"} {
- set texbin [file dirname [info script]]
+ set texbin [file dirname [file normalize [info script]]]
set savedir [pwd]
cd $texbin
set texbin [pwd]
@@ -2065,16 +2124,11 @@
cd $savedir
# prepend texbin to PATH, unless it is already the _first_
# path component
- if {$::tcl_platform(platform) eq "unix"} {
- set pathsep ":"
- } else {
- set pathsep ";"
- }
- set dirs [split $::env(PATH) $pathsep]
+ set dirs [split $::env(PATH) ":"]
if {[lindex $dirs 0] ne $texbin} {
- set ::env(PATH) "$texbin$pathsep$::env(PATH)"
+ set ::env(PATH) "${texbin}:$::env(PATH)"
}
- # now is a good time to ask tlmgr for the tl name of our platform
+ # now is a good time to ask tlmgr for the _TL_ name of our platform
set ::our_platform [exec tlmgr print-platform]
}
# directory for temp files
@@ -2118,16 +2172,18 @@
set ::flid [open $fname w]
}
+ # in case we are going to do something with json:
# add json subdirectory to auto_path, but at low priority
# since the tcl/tk installation may already have a better implementation.
- # Use kpsewhich to find out own directory and bypass symlinks.
+ # Trust kpsewhich to find out own directory and bypass symlinks.
#set tlsdir [file dirname [exec kpsewhich -format texmfscripts tlshell.tcl]]
#lappend ::auto_path [file join $tlsdir "json"]
- make_widgets
+ populate_main
start_tlmgr
- get_repo
+ get_repos_from_tlmgr
+ .topf.lrepos configure -text [print_repos]
get_packages_info_local
collect_filtered ; # invokes display_packages_info
enable_menu_controls 1
Added: trunk/Master/tlpkg/TeXLive/tltcl.tcl
===================================================================
--- trunk/Master/tlpkg/TeXLive/tltcl.tcl (rev 0)
+++ trunk/Master/tlpkg/TeXLive/tltcl.tcl 2018-10-20 09:17:47 UTC (rev 48955)
@@ -0,0 +1,434 @@
+#!/usr/bin/env wish
+
+# Copyright 2018 Siep Kroonenberg
+
+# This file is licensed under the GNU General Public License version 2
+# or any later version.
+
+# common declarations for tlshell.tcl and install-tl-gui.tcl
+
+set ::plain_unix 0
+if {$::tcl_platform(platform) eq "unix" && $::tcl_platform(os) ne "Darwin"} {
+ set ::plain_unix 1
+}
+
+# process ID of the perl program that will run in the background
+set ::perlpid 0
+
+set any_mirror "http://mirror.ctan.org/systems/texlive/tlnet"
+
+proc get_stacktrace {} {
+ set level [info level]
+ set s ""
+ for {set i 1} {$i < $level} {incr i} {
+ append s [format "Level %u: %s\n" $i [info level $i]]
+ }
+ return $s
+} ; # get_stacktrace
+
+# what exit procs do we need?
+# - plain error exit with messagebox and stacktrace
+# - plain messagebox exit
+# - showing log output, maybe with appended message,
+# use log toplevel for lengthy output
+# is closing the pipe $::inst guaranteed to kill perl? It should be
+
+proc err_exit {{mess ""}} {
+ if {$mess eq ""} {set mess "Error"}
+ append mess "\n" [get_stacktrace]
+ if $::plain_unix {
+ # plain_unix: avoid a RenderBadPicture error on quitting.
+ # 'send' changes the shutdown sequence,
+ # which avoids triggering the bug.
+ # 'tk appname <something>' restores 'send' and avoids the bug
+ bind . <Destroy> {
+ catch {tk appname appname}
+ }
+ }
+ tk_messageBox -icon error -message $mess
+ # kill perl process, just in case
+ if $::perlpid {
+ catch {
+ if {$::tcl_platform(platform) eq "unix"} {
+ exec -ignorestderr "kill" $::perlpid
+ } else {
+ exec -ignorestderr "taskkill" "/pid" $::perlpid
+ }
+ }
+ }
+ exit
+} ; # err_exit
+
+# localization support
+# tcl 8.5 observes LANG on Unix, but is overruled by LC_ALL.
+# for 8.5 or on Mac OS, locale setting from within tcl may not work.
+# so let the shell wrapper handle a language option by setting LANG
+# and unsetting LC_ALL.
+
+# $TEXMFCONFIG/tlmgr/config can have a setting for gui-lang.
+# replace with shell script / batchfile which is sourced?
+
+# for windows there is a bundled 8.6 in which locale can be set on-the-fly.
+# consult registry for default locale if LANG is not set.
+# The wrapper already does this, but here we do it again
+# in case e.g. company policy blocked reg.exe.
+
+# check the command-line for a lang parameter
+unset -nocomplain lang
+set i 0
+while {$i < $::argc} {
+ set p [lindex $::argv $i]
+ incr i
+ if {$p eq "-lang" || $p eq "--lang"} {
+ if {$i < $::argc} {
+ set lang [lindex $::argv $i]
+ break
+ }
+ } elseif {[string range $p 0 5] eq "-lang="} {
+ set lang [string range $p 6 end]
+ break
+ } elseif {[string range $p 0 6] eq "--lang="} {
+ set lang [string range $p 7 end]
+ break
+ }
+}
+unset i
+
+# first fallback: check config file if available
+if {! [info exists lang] || $lang eq ""} {
+ foreach tmf {"TEXMFCONFIG" "TEXMFSYSCONFIG"} {
+ if [catch {exec kpsewhich -var-value $tmf} d] {
+ break; # apparently there is not yet a TL installation
+ }
+ if [catch {open [file join $d "tlmgr" "config"] r} fid] continue
+ while 1 {
+ if [catch {chan gets $fid} l] break
+ if {[regexp {^gui-lang\s*=\s*(\S+)$} $l m lang]} {
+ chan close $fid
+ break
+ }
+ }
+ if {[info exists lang] && $lang ne ""} break
+ }
+}
+
+# second fallback: check environment for LC_ALL, LC_MESSAGES and LANG
+if {! [info exists lang] || $lang eq ""} {
+ foreach lng {"LC_ALL" "LC_MESSAGES" "LANG"} {
+ if {[info exists ::env($lng)] && $::env($lng) ne ""} {
+ set lang $::env($lng)
+ break
+ }
+ }
+}
+
+# third fallback, windows-only: check registry
+if {(! [info exists lang] || $lang eq "") && \
+ $::tcl_platform(platform) eq "windows"} {
+ if {! [catch {package require registry}]} {
+ set regpath [join {HKEY_LOCAL_MACHINE system currentcontrolset \
+ control nls language} "\\"]
+ if {! [catch {registry get $regpath "Installlanguage"} lcode]} {
+ set regpath [join {HKEY_CLASSES_ROOT mime database rfc1766} "\\"]
+ if {! [catch {registry get $regpath $lcode} lng]} {
+ set l [string first ";" $lng]
+ if {$l > 0} {
+ incr l -1
+ set lng [string range $lng 0 $l]
+ }
+ set lang $lng
+ #tk_messageBox -message "Language $lang in registry found"
+ }
+ }
+ }
+}
+
+# load the message catalog
+package require msgcat
+if {[info exists lang] && $lang ne ""} {
+ ::msgcat::mclocale $lang
+ #unset lang
+}
+::msgcat::mcload [file join $::instroot "tlpkg" "translations"]
+
+proc __ {s args} {return [::msgcat::mc $s {*}$args]}
+
+# string representation of booleans
+proc yes_no {b} {
+ if $b {
+ set ans [::msgcat::mc "Yes"]
+ } else {
+ set ans [::msgcat::mc "No"]
+ }
+ return $ans
+}
+
+if {$::tcl_platform(os) eq "Darwin"} {
+ # avoid warnings 'tar: Failed to set default locale'
+ set ::env(LC_ALL) "en_US.UTF-8"
+}
+
+### fonts ###
+
+# no bold text for messages; `userDefault' indicates priority
+option add *Dialog.msg.font TkDefaultFont userDefault
+
+# larger fonts: lfont and bold titlefont
+font create lfont {*}[font configure TkDefaultFont]
+font configure lfont -size [expr {round(1.2 * [font actual lfont -size])}]
+font create bfont {*}[font configure TkDefaultFont]
+font configure bfont -weight bold
+font create hfont {*}[font configure lfont]
+font configure hfont -weight bold
+font create titlefont {*}[font configure TkDefaultFont]
+font configure titlefont -weight bold \
+ -size [expr {round(1.5 * [font actual titlefont -size])}]
+
+## italicized items; not used
+#font create it_font {*}[font configure TkDefaultFont]
+#font configure it_font -slant italic
+
+# width of '0', as a very rough estimate of average character width
+# assume height == width*2
+set ::cw [font measure TkTextFont "0"]
+
+# default foreground color and disabled foreground color
+# may not be black in e.g. dark color schemes
+set blk [ttk::style lookup TButton -foreground]
+set gry [ttk::style lookup TButton -foreground disabled]
+
+# 'default' padding
+
+proc ppack {wdg args} { ; # pack command with padding
+ pack $wdg {*}$args -padx 3 -pady 3
+}
+
+proc pgrid {wdg args} { ; # grid command with padding
+ grid $wdg {*}$args -padx 3 -pady 3
+}
+
+# unicode symbols as fake checkboxes in ttk::treeview widgets
+
+proc mark_sym {mrk} {
+ if $mrk {
+ return "\u25A3" ; # 'white square containing black small square'
+ } else {
+ return "\u25A1" ; # 'white square'
+ }
+} ; # mark_sym
+
+# for help output
+set ::env(NOPERLDOC) 1
+
+##### dialog support #####
+
+# for example code, look at dialog.tcl, part of Tk itself
+
+# global variable for dialog return value, in case the outcome
+# must be handled by the caller rather than by the dialog itself
+
+set ::dialog_ans {}
+
+# start new toplevel with settings appropriate for a dialog
+proc create_dlg {wnd {p .}} {
+ catch {destroy $wnd} ; # no error if it does not exist
+ toplevel $wnd -class Dialog
+ wm withdraw $wnd
+ if [winfo viewable $p] {wm transient $wnd $p}
+ if $::plain_unix {wm attributes $wnd -type dialog}
+ wm protocol $wnd WM_DELETE_WINDOW {destroy $wnd}
+}
+
+# Place a dialog centered wrt its parent.
+# If its geometry is somehow not yet available,
+# its upperleft corner will be centered.
+
+proc place_dlg {wnd {p "."}} {
+ set g [wm geometry $p]
+ scan $g "%dx%d+%d+%d" pw ph px py
+ set hcenter [expr {$px + $pw / 2}]
+ set vcenter [expr {$py + $ph / 2}]
+ set g [wm geometry $wnd]
+ set wh [winfo reqheight $wnd]
+ set ww [winfo reqwidth $wnd]
+ set wx [expr {$hcenter - $ww / 2}]
+ if {$wx < 0} { set wx 0}
+ set wy [expr {$vcenter - $wh / 2}]
+ if {$wy < 0} { set wy 0}
+ wm geometry $wnd [format "+%d+%d" $wx $wy]
+ wm state $wnd normal
+ wm attributes $wnd -topmost
+ raise $wnd $p
+ tkwait visibility $wnd
+ focus $wnd
+ grab set $wnd
+} ; # place_dlg
+
+# place dialog answer in ::dialog_ans, raise parent, close dialog
+proc end_dlg {ans wnd} {
+ set ::dialog_ans $ans
+ set p [winfo parent $wnd]
+ if {$p eq ""} {set p "."}
+ raise $p
+ destroy $wnd
+} ; # end_dlg
+
+##### directories #####
+
+# slash flipping
+proc forward_slashify {s} {
+ regsub -all {\\} $s {/} r
+ return $r
+}
+proc native_slashify {s} {
+ if {$::tcl_platform(platform) eq "windows"} {
+ regsub -all {/} $s {\\} r
+ } else {
+ regsub -all {\\} $s {/} r
+ }
+ return $r
+}
+
+# unix: choose_dir replacing native directory browser
+
+if {$::tcl_platform(platform) eq "unix"} {
+
+ # Based on the tcl/tk widget demo.
+ # Also for MacOS, because we want to see /usr.
+ # For windows, the native browser widget is better.
+
+ ## Code to populate a single directory node
+ proc populateTree {tree node} {
+ if {[$tree set $node type] ne "directory"} {
+ set type [$tree set $node type]
+ return
+ }
+ $tree delete [$tree children $node]
+ foreach f [lsort [glob -nocomplain -directory $node *]] {
+ set type [file type $f]
+ if {$type eq "directory"} {
+ $tree insert $node end \
+ -id $f -text [file tail $f] -values [list $type]
+ # Need at least one child to make this node openable,
+ # will be deleted when actually populating this node
+ $tree insert $f 0 -text "dummy"
+ }
+ }
+ # Stop this code from rerunning on the current node
+ $tree set $node type processedDirectory
+ }
+
+ proc choose_dir {initdir {parent .}} {
+
+ create_dlg .browser $parent
+ wm title .browser [__ "Browse..."]
+
+ # wallpaper
+ pack [ttk::frame .browser.bg -padding 3] -fill both -expand 1
+ ## Create the tree and set it up
+ pack [ttk::frame .browser.fr0] -in .browser.bg -fill both -expand 1
+ set tree [ttk::treeview .browser.tree \
+ -columns {type} -displaycolumns {} -selectmode browse \
+ -yscroll ".browser.vsb set"]
+ .browser.tree column 0 -minwidth 500 -stretch 0
+ ttk::scrollbar .browser.vsb -orient vertical -command "$tree yview"
+ # hor. scrolling does not work, but toplevel and widget are resizable
+ $tree heading \#0 -text "/"
+ $tree insert {} end -id "/" -text "/" -values [list "directory"]
+
+ populateTree $tree "/"
+ bind $tree <<TreeviewOpen>> {
+ populateTree %W [%W focus]
+ }
+ bind $tree <ButtonRelease-1> {
+ .browser.tree heading \#0 -text [%W focus]
+ }
+
+ ## Arrange the tree and its scrollbar in the toplevel
+ # horizontal scrolling does not work.
+ # possible solution: very wide treeview in smaller paned window
+ # (may as well use pack in the absence of a horizontal scrollbar)
+ grid $tree .browser.vsb -sticky nsew -in .browser.fr0
+ grid columnconfigure .browser.fr0 0 -weight 1
+ grid rowconfigure .browser.fr0 0 -weight 1
+
+ # ok and cancel buttons
+ pack [ttk::frame .browser.fr1] -in .browser.bg -fill x -expand 1
+ ppack [ttk::button .browser.ok -text [__ "Ok"]] \
+ -in .browser.fr1 -side right
+ ppack [ttk::button .browser.cancel -text [__ "Cancel"]] \
+ -in .browser.fr1 -side right
+ .browser.ok configure -command {
+ set ::dialog_ans [.browser.tree focus]
+ destroy .browser
+ }
+ .browser.cancel configure -command {
+ set ::dialog_ans ""
+ destroy .browser
+ }
+ unset -nocomplain ::dialog_ans
+
+ # navigate tree to $initdir
+ set chosenDir {}
+ foreach d [file split [file normalize $initdir]] {
+ set nextdir [file join $chosenDir $d]
+ if [file isdirectory $nextdir] {
+ if {! [$tree exists $nextdir]} {
+ $tree insert $chosenDir end -id $nextdir \
+ -text $d -values [list "directory"]
+ }
+ populateTree $tree $nextdir
+ set chosenDir $nextdir
+ } else {
+ break
+ }
+ }
+ $tree see $chosenDir
+ $tree selection set [list $chosenDir]
+ $tree focus $chosenDir
+ $tree heading \#0 -text $chosenDir
+
+ place_dlg .browser $parent
+ tkwait window .browser
+ return $::dialog_ans
+ }; # choose_dir
+
+}; # if unix
+
+proc browse4dir {inidir {parent .}} {
+ if {$::tcl_platform(platform) eq "unix"} {
+ return [choose_dir $inidir $parent]
+ } else {
+ return [tk_chooseDirectory \
+ -initialdir $inidir -title [__ "Select or type"] -parent $parent]
+ }
+} ; # browse4dir
+
+# browse for a directory and store in entry- or label widget $w
+proc dirbrowser2widget {w} {
+ set wclass [winfo class $w]
+ if {$wclass eq "Entry" || $wclass eq "TEntry"} {
+ set is_entry 1
+ } elseif {$wclass eq "Label" || $wclass eq "TLabel"} {
+ set is_entry 0
+ } else {
+ err_exit "browse2widget invoked with unsupported widget class $wclass"
+ }
+ if $is_entry {
+ set retval [$w get]
+ } else {
+ set retval [$w cget -text]
+ }
+ set retval [browse4dir $retval [winfo parent $w]]
+ if {$retval eq ""} {
+ return 0
+ } else {
+ if {$wclass eq "Entry" || $wclass eq "TEntry"} {
+ $w delete 0 end
+ $w insert 0 $retval
+ } else {
+ $w configure -text $retval
+ }
+ return 1
+ }
+}
Property changes on: trunk/Master/tlpkg/TeXLive/tltcl.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tl-update-messages
===================================================================
--- trunk/Master/tlpkg/bin/tl-update-messages 2018-10-20 07:22:17 UTC (rev 48954)
+++ trunk/Master/tlpkg/bin/tl-update-messages 2018-10-20 09:17:47 UTC (rev 48955)
@@ -38,6 +38,7 @@
tlpkg/installer/install-menu-perltk.pl \
texmf-dist/scripts/texlive/tlmgrgui.pl \
tlpkg/installer/install-tl-gui.tcl \
+ tlpkg/TeXLive/tltcl.tcl \
texmf-dist/scripts/tlshell/tlshell.tcl \
$tmpfile
rm $tmpfile
Modified: trunk/Master/tlpkg/installer/install-tl-gui.tcl
===================================================================
--- trunk/Master/tlpkg/installer/install-tl-gui.tcl 2018-10-20 07:22:17 UTC (rev 48954)
+++ trunk/Master/tlpkg/installer/install-tl-gui.tcl 2018-10-20 09:17:47 UTC (rev 48955)
@@ -5,7 +5,7 @@
# This file is licensed under the GNU General Public License version 2
# or any later version.
-# Tcl/Tk wrapper for TeX Live installer
+# Tcl/Tk frontend for TeX Live installer
# Installation can be divided into three stages:
#
@@ -35,103 +35,25 @@
# security: disable send
catch {rename send {}}
-# menus: disable tearoff feature
-option add *Menu.tearOff 0
-
-# no bold text for messages; `userDefault' indicates priority
-option add *Dialog.msg.font TkDefaultFont userDefault
-
-# larger fonts
-font create lfont {*}[font configure TkDefaultFont]
-font configure lfont -size [expr {round(1.2 * [font actual lfont -size])}]
-font create hfont {*}[font configure lfont]
-font configure hfont -weight bold
-font create titlefont {*}[font configure TkDefaultFont]
-font configure titlefont -weight bold \
- -size [expr {round(1.5 * [font actual titlefont -size])}]
-
-## italicized items; not used
-#font create it_font {*}[font configure TkDefaultFont]
-#font configure it_font -slant italic
-
-# string representation of booleans
-proc yes_no {b} {
- return [expr {$b ? [__"Yes"] : [__ "No"]}]
-}
-
-# default foreground color and disabled foreground color
-# may not be black in e.g. dark color schemes
-set blk [ttk::style lookup TButton -foreground]
-set gry [ttk::style lookup TButton -foreground disabled]
-
-### initialize some globals ###
-
-# perl installer process id
-set ::perlpid 0
-
-# global variable for dialogs
-set ::dialog_ans {}
-
-set ::plain_unix 0
-if {$::tcl_platform(platform) eq "unix" && $::tcl_platform(os) ne "Darwin"} {
- set ::plain_unix 1
-}
-
-# for help output
-set ::env(NOPERLDOC) 1
-
-set ::out_log {}; # list of strings
-
# this file should be in $::instroot/tlpkg/installer.
# at the next release, it may be better to start the installer, perl or tcl,
# from a shell wrapper, also on unix-like platforms
# this allows automatic inclusion of '--' parameter to separate
# tcl parameters from script parameters
+
set ::instroot [file normalize [info script]]
set ::instroot [file dirname [file dirname [file dirname $::instroot]]]
-# localization support
-# tcl 8.5 observes LC_ALL on linux, LANG on Mac OS.
-# so let the shell wrapper handle a language option.
-# for 8.5, locale setting from within tcl may not work.
+# declarations and procs shared with tlshell.tcl
+source [file join $::instroot "tlpkg" "TeXLive" "tltcl.tcl"]
-# exception: windows, for which there is a bundled 8.6.
-# consult registry for default locale if LANG is not set.
-# The wrapper already does this, but here we do it again
-# in case company policy blocked reg.exe.
+### initialize some globals ###
-if {$::tcl_platform(platform) eq "windows"} {
- if {! [info exists ::env(LANG)] || $::env(LANG) eq ""} {
- if {! [catch {package require registry}]} {
- set regpath [join {HKEY_LOCAL_MACHINE system currentcontrolset
- control nls language} "\\"]
- if {! [catch {registry get $regpath "Installlanguage"} lcode]} {
- set regpath [join {HKEY_CLASSES_ROOT mime database rfc1766} "\\"]
- if {! [catch {registry get $regpath $lcode} lng]} {
- set l [string first ";" $lng]
- if {$l > 0} {
- incr l -1
- set lng [string range $lng 0 $l]
- }
- set ::env(LANG) $lng
- # tk_messageBox -message "Language $lng in registry found"
- }
- }
- }
- }
-}
+# perl installer process id
+set ::perlpid 0
-# inside tcl, just load the message catalogs (all languages)
-package require msgcat
-namespace import msgcat::mc
-::msgcat::mcload [file join $::instroot "tlpkg" "translations"]
+set ::out_log {}; # list of strings
-if {$::tcl_platform(os) eq "Darwin"} {
- # avoid warnings 'tar: Failed to set default locale'
- set ::env(LC_ALL) "en_US.UTF-8"
-}
-proc __ {s args} {return [::msgcat::mc $s {*}$args]}
-
set ::perlbin "perl"
if {$::tcl_platform(platform) eq "windows"} {
set ::perlbin "${::instroot}/tlpkg/tlperl/bin/wperl.exe"
@@ -139,6 +61,9 @@
### procedures, mostly organized bottom-up ###
+# the procedures which provide the menu with the necessary backend data,
+# i.e. read_descs, read_vars and read_menu_data, are defined near the end.
+
set clock0 [clock milliseconds]
set profiling 0
proc show_time {s} {
@@ -147,15 +72,6 @@
}
}
-proc get_stacktrace {} {
- set level [info level]
- set s ""
- for {set i 1} {$i < $level} {incr i} {
- append s [format "Level %u: %s\n" $i [info level $i]]
- }
- return $s
-} ; # get_stacktrace
-
# for debugging frontend-backend communication:
# write to a logfile which is shared with the backend.
# both parties open, append and close every time.
@@ -174,31 +90,6 @@
close $db
}
-# dummy translation function
-#proc _ {fmt args} {return [format $fmt {*}$args]}
-
-# what exit procs do we need?
-# - plain error exit with messagebox and stacktrace
-# - plain messagebox exit
-# - showing log output, maybe with appended message,
-# use log toplevel for lengthy output
-# is closing the pipe $::inst guaranteed to kill perl? It should be
-
-proc err_exit {{mess ""}} {
- if {$mess eq ""} {set mess [__ "Error"]}
- append mess "\n" [get_stacktrace]
- tk_messageBox -icon error -message $mess
- # kill perl process, just in case
- if $::perlpid {
- if {$::tcl_platform(platform) eq "unix"} {
- exec -ignorestderr "kill" $::perlpid
- } else {
- exec -ignorestderr "taskkill" "/pid" $::perlpid
- }
- }
- exit
-} ; # err_exit
-
proc maybe_print_welcome {} {
# if the last non-empty line was "All done", then installation is completed.
# otherwise, it was help output or an interrupted installation.
@@ -290,72 +181,6 @@
}
}; # read_line_cb
-# general gui utilities
-
-# width of '0', as a rough estimate of average character width
-# assume height == width*2
-set ::cw [font measure TkTextFont "0"]
-
-# unicode symbols as fake checkboxes in ttk::treeview widgets
-proc mark_sym {mrk} {
- if $mrk {
- return "\u25A3" ; # 'white square containing black small square'
- } else {
- return "\u25A1" ; # 'white square'
- }
-} ; # mark_sym
-
-proc ppack {wdg args} { ; # pack command with padding
- pack $wdg {*}$args -padx 3 -pady 3
-}
-
-proc pgrid {wdg args} { ; # grid command with padding
- grid $wdg {*}$args -padx 3 -pady 3
-}
-
-# start new toplevel with settings appropriate for a dialog
-proc create_dlg {wnd {p .}} {
- catch {destroy $wnd} ; # no error if it does not exist
- toplevel $wnd -class Dialog
- wm withdraw $wnd
- if [winfo viewable $p] {wm transient $wnd $p}
- if $::plain_unix {wm attributes $wnd -type dialog}
- wm protocol $wnd WM_DELETE_WINDOW {destroy $wnd}
-}
-
-# Place a dialog centered wrt its parent.
-# If its geometry is somehow not yet available,
-# its upperleft corner will be centered.
-
-proc place_dlg {wnd {p "."}} {
- set g [wm geometry $p]
- scan $g "%dx%d+%d+%d" pw ph px py
- set hcenter [expr {$px + $pw / 2}]
- set vcenter [expr {$py + $ph / 2}]
- set g [wm geometry $wnd]
- set wh [winfo reqheight $wnd]
- set ww [winfo reqwidth $wnd]
- set wx [expr {$hcenter - $ww / 2}]
- if {$wx < 0} { set wx 0}
- set wy [expr {$vcenter - $wh / 2}]
- if {$wy < 0} { set wy 0}
- wm geometry $wnd [format "+%d+%d" $wx $wy]
- wm state $wnd normal
- wm attributes $wnd -topmost
- raise $wnd $p
- tkwait visibility $wnd
- focus $wnd
- grab set $wnd
-} ; # place_dlg
-
-# place dialog answer in ::dialog_ans, raise parent, close dialog
-proc end_dlg {ans wnd {p "."}} {
- set ::dialog_ans $ans
- raise $p
- wm withdraw $wnd
- destroy $wnd
-} ; # end_dlg
-
##############################################################
##### special-purpose uses of main window: splash, log #####
@@ -370,6 +195,7 @@
label .image -image tlimage -background white
pack .image -in .white
}
+
# wallpaper
pack [ttk::frame .bg -padding 3] -fill both -expand 1
@@ -442,165 +268,6 @@
#############################################################
-##### directories #####
-
-set sep [file separator]
-
-# slash flipping
-proc forward_slashify {s} {
- regsub -all {\\} $s {/} r
- return $r
-}
-proc native_slashify {s} {
- if {$::tcl_platform(platform) eq "windows"} {
- regsub -all {/} $s {\\} r
- } else {
- regsub -all {\\} $s {/} r
- }
- return $r
-}
-
-# unix: choose_dir replacing native directory browser
-
-if {$::tcl_platform(platform) ne "windows"} {
-
- # Based on the tcl/tk widget demo.
- # Also for MacOS, because we want to see /usr.
- # For windows, the native browser widget is better.
-
- ## Code to populate a single directory node
- proc populateTree {tree node} {
- if {[$tree set $node type] ne "directory"} {
- set type [$tree set $node type]
- return
- }
- $tree delete [$tree children $node]
- foreach f [lsort [glob -nocomplain -directory $node *]] {
- set type [file type $f]
- if {$type eq "directory"} {
- $tree insert $node end \
- -id $f -text [file tail $f] -values [list $type]
- # Need at least one child to make this node openable,
- # will be deleted when actually populating this node
- $tree insert $f 0 -text "dummy"
- }
- }
- # Stop this code from rerunning on the current node
- $tree set $node type processedDirectory
- }
-
- proc choose_dir {initdir {parent .}} {
-
- create_dlg .browser $parent
- wm title .browser [__ "Browse..."]
-
- # wallpaper
- pack [ttk::frame .browser.bg -padding 3] -fill both -expand 1
- ## Create the tree and set it up
- pack [ttk::frame .browser.fr0] -in .browser.bg -fill both -expand 1
- set tree [ttk::treeview .browser.tree \
- -columns {type} -displaycolumns {} -selectmode browse \
- -yscroll ".browser.vsb set"]
- .browser.tree column 0 -minwidth 500 -stretch 0
- ttk::scrollbar .browser.vsb -orient vertical -command "$tree yview"
- # hor. scrolling does not work, but toplevel and widget are resizable
- $tree heading \#0 -text "/"
- $tree insert {} end -id "/" -text "/" -values [list "directory"]
-
- populateTree $tree "/"
- bind $tree <<TreeviewOpen>> {
- populateTree %W [%W focus]
- }
- bind $tree <ButtonRelease-1> {
- .browser.tree heading \#0 -text [%W focus]
- }
-
- ## Arrange the tree and its scrollbar in the toplevel
- # horizontal scrolling does not work.
- # possible solution: very wide treeview in smaller paned window
- # (may as well use pack in the absence of a horizontal scrollbar)
- grid $tree .browser.vsb -sticky nsew -in .browser.fr0
- grid columnconfigure .browser.fr0 0 -weight 1
- grid rowconfigure .browser.fr0 0 -weight 1
-
- # ok and cancel buttons
- pack [ttk::frame .browser.fr1] -in .browser.bg -fill x -expand 1
- ppack [ttk::button .browser.ok -text [__ "Ok"]] \
- -in .browser.fr1 -side right
- ppack [ttk::button .browser.cancel -text [__ "Cancel"]] \
- -in .browser.fr1 -side right
- .browser.ok configure -command {
- set ::dialog_ans [.browser.tree focus]
- destroy .browser
- }
- .browser.cancel configure -command {
- set ::dialog_ans ""
- destroy .browser
- }
- unset -nocomplain ::dialog_ans
-
- # navigate tree to $initdir
- set chosenDir {}
- foreach d [file split [file normalize $initdir]] {
- set nextdir [file join $chosenDir $d]
- if [file isdirectory $nextdir] {
- if {! [$tree exists $nextdir]} {
- $tree insert $chosenDir end -id $nextdir \
- -text $d -values [list "directory"]
- }
- populateTree $tree $nextdir
- set chosenDir $nextdir
- } else {
- break
- }
- }
- $tree see $chosenDir
- $tree selection set [list $chosenDir]
- $tree focus $chosenDir
- $tree heading \#0 -text $chosenDir
-
- place_dlg .browser $parent
- tkwait window .browser
- return $::dialog_ans
- }; # choose_dir
-
-}; # if not windows
-
-
-# browse for a directory and store in entry- or label widget $w
-proc dirbrowser2widget {w} {
- set wclass [winfo class $w]
- if {$wclass eq "Entry" || $wclass eq "TEntry"} {
- set is_entry 1
- } elseif {$wclass eq "Label" || $wclass eq "TLabel"} {
- set is_entry 0
- } else {
- err_exit "browse2widget invoked with unsupported widget class $wclass"
- }
- if $is_entry {
- set retval [$w get]
- } else {
- set retval [$w cget -text]
- }
- if {$::tcl_platform(platform) eq "unix"} {
- set retval [choose_dir $retval [winfo parent $w]]
- } else {
- set retval [tk_chooseDirectory \
- -initialdir $retval -title [__ "Select or type"]]
- }
- if {$retval eq ""} {
- return 0
- } else {
- if {$wclass eq "Entry" || $wclass eq "TEntry"} {
- $w delete 0 end
- $w insert 0 $retval
- } else {
- $w configure -text $retval
- }
- return 1
- }
-}
-
##########################################################
##### installation root #####
@@ -678,7 +345,7 @@
update_full_path
} ; # toggle_rel
-proc canonical_local {} {
+proc commit_canonical_local {} {
if {[file tail $::vars(TEXDIR)] eq $::release_year} {
set l [file dirname $::vars(TEXDIR)]
} else {
@@ -694,7 +361,7 @@
set ::vars(TEXDIR) [forward_slashify [.tltd.path_l cget -text]]
set ::vars(TEXMFSYSVAR) "$::vars(TEXDIR)/texmf-var"
set ::vars(TEXMFSYSCONFIG) "$::vars(TEXDIR)/texmf-var"
- canonical_local
+ commit_canonical_local
if {$::vars(instopt_portable)} reset_personal_dirs
destroy .tltd
@@ -726,9 +393,11 @@
# path components, as labels
incr rw
pgrid [ttk::label .tltd.prefix_l] -in .tltd.fr1 -row $rw -column 0
- pgrid [ttk::label .tltd.sep0_l -text $::sep] -in .tltd.fr1 -row $rw -column 1
+ pgrid [ttk::label .tltd.sep0_l -text [file separator]] \
+ -in .tltd.fr1 -row $rw -column 1
pgrid [ttk::label .tltd.name_l] -in .tltd.fr1 -row $rw -column 2
- pgrid [ttk::label .tltd.sep1_l -text $::sep] -in .tltd.fr1 -row $rw -column 3
+ pgrid [ttk::label .tltd.sep1_l -text [file separator]] \
+ -in .tltd.fr1 -row $rw -column 3
pgrid [ttk::label .tltd.rel_l -width 6] \
-in .tltd.fr1 -row $rw -column 4
# corresponding buttons
@@ -792,7 +461,7 @@
if {$initdir eq "" || \
($::tcl_platform(platform) eq "windows" && \
[string index $initdir end] eq ":")} {
- append initdir $::sep
+ append initdir [file separator]
}
.tltd.prefix_l configure -text $initdir
update_full_path
@@ -836,22 +505,22 @@
# below, ensure that $v is evaluated while the interface is built:
# the variable won't be available to the button callback
# quoted string rather than curly braces
- ttk::button .td.ok -text [__ "Ok"] -command \
- "set ::vars($d) [forward_slashify [.td.e get]]; end_dlg 1 .td ."
+ ttk::button .td.ok -text [__ "Ok"] -command {end_dlg [.td.e get] .td}
ppack .td.ok -in .td.f -side right
- ttk::button .td.cancel -text [__ "Cancel"] -command {end_dlg 0 .td .}
+ ttk::button .td.cancel -text [__ "Cancel"] -command {end_dlg "" .td}
ppack .td.cancel -in .td.f -side right
place_dlg .td .
tkwait window .td
- #tk_messageBox -message $::dialog_ans
- #return $::dialog_ans
+ if {$::dialog_ans ne ""} {set ::vars($d) $::dialog_ans}
}
proc toggle_port {} {
set ::vars(instopt_portable) [expr {!$::vars(instopt_portable)}]
- .dirportvl configure -text [yes_no $::vars(instopt_portable)]
- canonical_local
+ set yn [yes_no $::vars(instopt_portable)]
+ .dirportvl configure -text $yn
+# .dirportvl configure -text [yes_no $::vars(instopt_portable)]
+ commit_canonical_local
if {$::vars(instopt_portable)} {
set ::vars(TEXMFHOME) $::vars(TEXMFLOCAL)
set ::vars(TEXMFVAR) $::vars(TEXMFSYSVAR)
@@ -879,6 +548,7 @@
}
} else {
set ::vars(instopt_adjustpath) 0
+ .symspec state disabled
.pathb state disabled
.pathl configure -foreground $::gry
}
@@ -910,6 +580,7 @@
} else {
# set ::vars(instopt_adjustpath) 0
# leave false, still depends on symlink paths
+ .symspec state !disabled
if [dis_enable_symlink_option] {
.pathb state !disabled
.pathl configure -foreground $::blk
@@ -926,7 +597,7 @@
# n. of additional platforms
if [winfo exists .binlm] {
if {$::vars(n_systems_selected) < 2} {
- .binlm configure -text "None"
+ .binlm configure -text [__ "None"]
} else {
.binlm configure -text [expr {$::vars(n_systems_selected) - 1}]
}
@@ -938,6 +609,9 @@
$::vars(n_collections_selected) \
$::vars(n_collections_available)]
}
+ if [winfo exists .schml] {
+ .schml configure -text [__ $::scheme_descs($::vars(selected_scheme))]
+ }
# diskspace: can use -textvariable here
# paper size
}; # show_stats
@@ -1016,14 +690,12 @@
# ok, cancel buttons
pack [ttk::frame .tlbin.buts] -in .tlbin.bg -expand 1 -fill x
ttk::button .tlbin.ok -text [__ "Ok"] -command \
- {save_bin_selections; update_vars; end_dlg 1 .tlbin .}
+ {save_bin_selections; update_vars; end_dlg 1 .tlbin}
ppack .tlbin.ok -in .tlbin.buts -side right
- ttk::button .tlbin.cancel -text [__ "Cancel"] -command {end_dlg 0 .tlbin .}
+ ttk::button .tlbin.cancel -text [__ "Cancel"] -command {end_dlg 0 .tlbin}
ppack .tlbin.cancel -in .tlbin.buts -side right
place_dlg .tlbin .
- tkwait window .tlbin
- return $::dialog_ans
}; # select_binaries
#############################################################
@@ -1067,15 +739,13 @@
}
update_vars
show_stats
- end_dlg 1 .tlschm .
+ end_dlg 1 .tlschm
}
ppack .tlschm.ok -in .tlschm.buts -side right
- ttk::button .tlschm.cancel -text [__ "Cancel"] -command {end_dlg 0 .tlschm .}
+ ttk::button .tlschm.cancel -text [__ "Cancel"] -command {end_dlg 0 .tlschm}
ppack .tlschm.cancel -in .tlschm.buts -side right
place_dlg .tlschm .
- tkwait window .tlschm
- return $::dialog_ans
}; # select_scheme
#############################################################
@@ -1109,11 +779,11 @@
}; # save_coll_selections
proc select_collections {} {
- # 2017: more than 40 collections
- # The tcl installer acquires collections from the database file,
+ # 2018: more than 40 collections
+ # The tcl installer acquires collections from install-menu-extl.pl,
# but install-tl also has an array of collections.
- # Use treeview for checkbox column and collection descriptions
- # rather than names.
+ # Use treeview for checkbox column and display of
+ # collection descriptions rather than names.
# buttons: select all, select none, ok, cancel
# should some collections be excluded? Check install-menu-* code.
create_dlg .tlcoll .
@@ -1185,15 +855,13 @@
}
ppack .tlcoll.none -in .tlcoll.butf -side left
ttk::button .tlcoll.ok -text [__ "Ok"] -command \
- {save_coll_selections; end_dlg 1 .tlcoll .}
+ {save_coll_selections; end_dlg 1 .tlcoll}
ppack .tlcoll.ok -in .tlcoll.butf -side right
- ttk::button .tlcoll.cancel -text [__ "Cancel"] -command {end_dlg 0 .tlcoll .}
+ ttk::button .tlcoll.cancel -text [__ "Cancel"] -command {end_dlg 0 .tlcoll}
ppack .tlcoll.cancel -in .tlcoll.butf -side right
place_dlg .tlcoll .
wm resizable .tlcoll 0 0
- tkwait window .tlcoll
- return $::dialog_ans
}; # select_collections
##################################################
@@ -1326,15 +994,13 @@
# ok, cancel
pack [ttk::frame .edsyms.fr1] -expand 1 -fill both
ppack [ttk::button .edsyms.ok -text [__ "Ok"] -command {
- commit_sym_entries; end_dlg 1 .edsyms .}] -in .edsyms.fr1 -side right
+ commit_sym_entries; end_dlg 1 .edsyms}] -in .edsyms.fr1 -side right
ppack [ttk::button .edsyms.cancel -text [__ "Cancel"] -command {
- end_dlg 0 .edsyms .}] -in .edsyms.fr1 -side right
+ end_dlg 0 .edsyms}] -in .edsyms.fr1 -side right
check_sym_entries
place_dlg .edsyms .
- tkwait window .edsyms
- return
}
}
@@ -1486,7 +1152,7 @@
incr rw
pgrid [ttk::label .schmll -text [__ "Scheme:"]] \
-in .selsf -row $rw -column 0 -sticky w
- pgrid [ttk::label .schml -textvariable ::vars(selected_scheme)] \
+ pgrid [ttk::label .schml -text ""] \
-in .selsf -row $rw -column 1 -sticky w
pgrid [ttk::button .schmb -text [__ "Change"] -command select_scheme] \
-in .selsf -row $rw -column 2 -sticky e
@@ -1511,7 +1177,7 @@
pgrid .size_req -in $curf -row $rw -column 1 -sticky w
########################################################
- # right: options
+ # right side: options
# 3 columns. Column 1 can be merged with either 0 or 2.
if $::advanced {
@@ -1907,7 +1573,7 @@
} else {
log_exit
}
-}
+}; # main_prog
file delete $::dblfile
Modified: trunk/Master/tlpkg/installer/install-tl-windows.cmd
===================================================================
--- trunk/Master/tlpkg/installer/install-tl-windows.cmd 2018-10-20 07:22:17 UTC (rev 48954)
+++ trunk/Master/tlpkg/installer/install-tl-windows.cmd 2018-10-20 09:17:47 UTC (rev 48955)
@@ -43,19 +43,11 @@
set args=
goto rebuildargs
-rem check for a gui- and lang arguments
-rem handle them here and do not pass them on to perl or tcl.
+rem check for a gui argument
+rem handle it here and do not pass it on to perl or tcl.
rem cmd.exe converts '=' to a space:
rem '-parameter=value' becomes '-parameter value': two arguments
-rem code block for language argument
-:dolang
-shift
-if "%0" == "" goto nomoreargs
-set LANG=%0
-set LC_ALL=
-goto rebuildargs
-
rem code block for gui argument
:dogui
if x%1 == x (
@@ -93,9 +85,6 @@
shift
if x%0 == x goto nomoreargs
set p=%0
-if %p% == --lang goto dolang
-if %p% == -lang goto dolang
-
if %p% == -print-platform set tcl=no
if %p% == --print-platform set tcl=no
if %p% == -version set tcl=no
@@ -128,7 +117,6 @@
rem Since reg.exe may be disabled by e.g. company policy,
rem tcl will yet consult the registry if LANG is not set,
rem although under some circumstances this may cause a long delay.
-goto endreg
if %tcl% == no goto endreg
if not x%LANG% == x goto endreg
rem reg.exe runnable by user?
Modified: trunk/Master/tlpkg/installer/install-tl.sh
===================================================================
--- trunk/Master/tlpkg/installer/install-tl.sh 2018-10-20 07:22:17 UTC (rev 48954)
+++ trunk/Master/tlpkg/installer/install-tl.sh 2018-10-20 09:17:47 UTC (rev 48955)
@@ -1,4 +1,4 @@
-#! /bin/sh
+#!/bin/sh
# default: tcl gui or not
if test `uname -s` = Darwin; then
@@ -9,13 +9,10 @@
# are there reasons not to use the tcl gui?
notcl=no
-args=''
-
unset wait_for_gui
-unset wait_for_lang
unset gui_set
-# We need "$@ syntax because some paramters may contain spaces.
+# We need "$@" syntax because some parameters may contain spaces.
# In order to make use of this syntax we must pass along ALL parameters.
for p in "$@"; do
# TODO: sanitize $p; abort if necessary
@@ -23,12 +20,10 @@
-tcl | --tcl)
if test $gui_set; then echo Gui set more than once; exit 1; fi
gui_set=1
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
unset wait_for_gui
tcl=yes
;;
-print-platform | --print-platform | -version | --version)
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
unset wait_for_gui
notcl=yes
;;
@@ -35,7 +30,6 @@
-gui | --gui)
if test $gui_set; then echo Gui set more than once; exit 1; fi
gui_set=1
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
tcl=yes
wait_for_gui=1
;;
@@ -42,7 +36,6 @@
--gui=* | -gui=*)
if test $gui_set; then echo Gui set more than once; exit 1; fi
gui_set=1
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
if test $p = -gui=text -o $p = --gui=text; then
tcl=no
else
@@ -51,27 +44,9 @@
unset wait_for_gui
;;
-no-gui | --no-gui)
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
unset wait_for_gui
notcl=yes
;;
- -lang | --lang)
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
- unset wait_for_gui
- wait_for_lang=1
- ;;
- -lang=*)
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
- unset wait_for_gui
- LANG=$p
- LANG=${LANG#-lang=}
- ;;
- --lang=*)
- if test $wait_for_lang; then echo Language code expected; exit 1; fi
- unset wait_for_gui
- LANG=$p
- LANG=${LANG#--lang=}
- ;;
*)
if test $wait_for_gui; then
if test $p = text; then
@@ -81,10 +56,6 @@
fi
unset wait_for_gui
fi
- if test $wait_for_lang; then
- LANG=$p
- unset wait_for_lang
- fi
;;
esac
done
@@ -92,11 +63,6 @@
tcl=no
fi
-export LANG
-LC_MESSAGES=$LANG
-export LC_MESSAGES
-unset LC_ALL
-
# silence perl locale warnings
PERL_BADLANG=0
export PERL_BADLANG
@@ -103,10 +69,10 @@
# We can safely pass all original parameters to perl:
# In install-tl[.pl], from_ext_gui will overrule the gui parameter.
-# The lang parameter will not come into play in either perl or tcl.
+# The lang parameter will be handled by tcl and not come into play in perl
if test "$tcl" = "yes"; then
- exec wish `dirname $0`/install-tl-gui.tcl -- "$@"
+ wish `dirname $0`/install-tl-gui.tcl -- "$@" &
else
- exec perl `dirname $0`/../../install-tl "$@"
+ perl `dirname $0`/../../install-tl "$@"
fi
Modified: trunk/Master/tlpkg/translations/nl.msg
===================================================================
--- trunk/Master/tlpkg/translations/nl.msg 2018-10-20 07:22:17 UTC (rev 48954)
+++ trunk/Master/tlpkg/translations/nl.msg 2018-10-20 09:17:47 UTC (rev 48955)
@@ -1,5 +1,5 @@
-set ::msgcat::header "Project-Id-Version: TeX Live translation\nReport-Msgid-Bugs-To: tex-live at tug.org\nPOT-Creation-Date: 2018-09-28 02:23+0200\nPO-Revision-Date: 2018-08-24 12:59+0200\nLast-Translator: Siep Kroonenberg <siepo at cybercomm.nl>\nLanguage-Team: TL Translation Team <tex-live at tug.org>\nLanguage: nl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nX-Poedit-SourceCharset: UTF-8\nX-Generator: Poedit 2.0.6\n"
-::msgcat::mcset nl "Installation process" "Installatie"
+set ::msgcat::header "Project-Id-Version: TeX Live translation\nReport-Msgid-Bugs-To: tex-live at tug.org\nPO-Revision-Date: 2018-10-19 20:30+0200\nLast-Translator: Siep Kroonenberg <siepo at cybercomm.nl>\nLanguage-Team: TL Translation Team <tex-live at tug.org>\nLanguage: nl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nX-Poedit-SourceCharset: UTF-8\nX-Generator: Poedit 2.0.6\n"
+::msgcat::mcset nl "Installation process" "Installatie-proces"
::msgcat::mcset nl "Cancel" "Afbreken"
::msgcat::mcset nl "Scroll back to inspect warnings" "Schuif terug om waarschuwingen te inspekteren"
::msgcat::mcset nl "Finish" "Sluit af"
@@ -33,12 +33,12 @@
::msgcat::mcset nl "Could not load remote TeX Live Database:" "Kon de online TeX Live database niet laden:"
::msgcat::mcset nl "Please go back and select a different mirror." "Ga terug en kies een andere mirror."
::msgcat::mcset nl "The TeX Live versions of the local installation\nand the repository being accessed are not compatible:\n local: %s\nrepository: %s" "De TeX Live versies van de lokale installatie\nen van de gebruikte installatie-bron zijn niet compatibel:\n lokaal: %s\n installatie-bron:%s"
-::msgcat::mcset nl "Destination folder:" "Bestemmings-folder"
+::msgcat::mcset nl "Destination folder:" "Bestemmings-folder:"
::msgcat::mcset nl "Change" "Wijzig"
::msgcat::mcset nl "The destination folder will contain the installation.\nIt is strongly recommended to keep the year as the last component." "De bestemmings-folder zal TeX Live bevatten.\nHet wordt sterk aangeraden het jaar aan te houden als laatste component."
-::msgcat::mcset nl "disk space required:" "benodigde schijfruimte"
+::msgcat::mcset nl "disk space required:" "benodigde schijfruimte:"
::msgcat::mcset nl "(default not allowed or not writable - please change!)" "(default niet toegestaan of niet schrijfbaar - aub wijzigen!)"
-::msgcat::mcset nl "This screen allows you to configure some options" "Met dit scherm kunt u enkele opties instellen."
+::msgcat::mcset nl "This screen allows you to configure some options" "Met dit scherm kunt u enkele opties instellen"
::msgcat::mcset nl "We are ready to install TeX Live %s.\nThe following settings will be used.\nIf you want to change something please go back,\notherwise press the \"Install\" button." "We zijn gereed om TeX Live %s te installeren.\nDe volgende instellingen worden gebruikt.\nGa terug als u iets wilt wijzigen,\nzo niet, klik dan op de \"Installeren\" knop."
::msgcat::mcset nl "Yes" "Ja"
::msgcat::mcset nl "No" "Nee"
@@ -84,11 +84,11 @@
::msgcat::mcset nl "Right-click install-tl-advanced and select \"run as administrator\"\n if you want to install for all users." "Rechts-klik install-tl-advanced en selekteer \"Als administrator uitvoeren\"\nals u voor alle gebruikers wilt installeren."
::msgcat::mcset nl "Change variable value" "Nieuwe waarde"
::msgcat::mcset nl "Enter path for %s (use ~ for %s)" "Pad voor %s (gebruik ~ voor %s)"
-::msgcat::mcset nl "custom selection of collections" "Eigen selektie van collekties"
+::msgcat::mcset nl "custom selection of collections" "eigen selektie van collekties"
::msgcat::mcset nl "Select the collections to be installed" "Kies te installeren collecties"
::msgcat::mcset nl "Select All" "Kies alles"
::msgcat::mcset nl "Deselect All" "Kies niets"
-::msgcat::mcset nl "create symlinks in standard directories" "Maak symlinks naar standaard-folders"
+::msgcat::mcset nl "create symlinks in standard directories" "maak symlinks naar standaard-folders"
::msgcat::mcset nl "binaries to" "programma's naar"
::msgcat::mcset nl "manpages to" "manpages naar"
::msgcat::mcset nl "info to" "info naar"
@@ -103,10 +103,10 @@
::msgcat::mcset nl "This may take some time, please be patient ..." "Dit kan even duren; even geduld aub..."
::msgcat::mcset nl "... done loading" "... klaar met laden"
::msgcat::mcset nl "You don't have permissions to change the installation in any way;\nspecifically, the directory %s is not writable.\nPlease run this program as administrator, or contact your local admin.\n\nMost buttons will be disabled." "U heeft geen rechten om de installatie op enige manier te wijzigen;\nin het bijzonder heeft u geen schrijfrechten voor de %s folder.\nVoer dit programma uit als administrator of neem contact op\nmet systeembeheer.\n\nDe meeste knoppen zijn gedeactiveerd."
-::msgcat::mcset nl "Repository" "installatie-bron"
+::msgcat::mcset nl "Repository" "Installatie-bron"
::msgcat::mcset nl "Loaded:" "Geladen:"
-::msgcat::mcset nl "none" "Geen"
-::msgcat::mcset nl "Load default" "Laad standaard installatie-bron."
+::msgcat::mcset nl "none" "geen"
+::msgcat::mcset nl "Load default" "Laad standaard installatie-bron"
::msgcat::mcset nl "multiple repositories" "meerdere installatie-bronnen"
::msgcat::mcset nl "Default:" "Standaard:"
::msgcat::mcset nl "Display configuration" "Laat instellingen zien"
@@ -118,7 +118,7 @@
::msgcat::mcset nl "Category" "Categorie"
::msgcat::mcset nl "packages" "pakketten"
::msgcat::mcset nl "collections" "collecties"
-::msgcat::mcset nl "schemes" "Schema's"
+::msgcat::mcset nl "schemes" "schema's"
::msgcat::mcset nl "Match" "Match"
::msgcat::mcset nl "descriptions" "beschrijvingen"
::msgcat::mcset nl "filenames" "bestandsnamen"
@@ -140,7 +140,7 @@
::msgcat::mcset nl "Actions" "Akties"
::msgcat::mcset nl "Help" "Help"
::msgcat::mcset nl "Load default (from tlpdb) repository:" "Laad standaard (volgens tlpdb) installatie-bron:"
-::msgcat::mcset nl "Load cmd line repository:" "Laad cmd line installatie-bron."
+::msgcat::mcset nl "Load cmd line repository:" "Laad cmd line installatie-bron:"
::msgcat::mcset nl "Load standard net repository:" "Laad standaard online installatie-bron:"
::msgcat::mcset nl "Load other repository ..." "Laad andere bron ..."
::msgcat::mcset nl "General ..." "Algemeen ..."
@@ -165,7 +165,7 @@
::msgcat::mcset nl "Package:" "Pakket:"
::msgcat::mcset nl "Category:" "Categorie:"
::msgcat::mcset nl "Short description:" "Korte beschrijving:"
-::msgcat::mcset nl "Long description:" "Lange beschrijving;"
+::msgcat::mcset nl "Long description:" "Lange beschrijving:"
::msgcat::mcset nl "Installed:" "Ge\u00efnstalleerd:"
::msgcat::mcset nl "Local revision:" "Lokale revisie:"
::msgcat::mcset nl "Local Catalogue version:" "Versie lokale catalogus:"
@@ -173,8 +173,8 @@
::msgcat::mcset nl "Remote Catalogue version:" "Versie online catalogus:"
::msgcat::mcset nl "Keywords:" "Trefwoorden:"
::msgcat::mcset nl "Functionality:" "Funktionaliteit:"
-::msgcat::mcset nl "Primary characterization:" "Primaire omschrijving"
-::msgcat::mcset nl "Secondary characterization:" "Secundaire omschrijving"
+::msgcat::mcset nl "Primary characterization:" "Primaire omschrijving:"
+::msgcat::mcset nl "Secondary characterization:" "Secundaire omschrijving:"
::msgcat::mcset nl "Collection:" "Collectie:"
::msgcat::mcset nl "Warning: Catalogue versions might be lagging behind or be simply wrong." "Waarschuwing: Catalogus versies kunnen achterlopen of niet kloppen."
::msgcat::mcset nl "Depends:" "Hangt af van:"
@@ -187,7 +187,7 @@
::msgcat::mcset nl "Update the TeX Live Manager" "Werk TeX Live Manager bij"
::msgcat::mcset nl "Select platforms to support" "Keuze van te ondersteunen platforms"
::msgcat::mcset nl "Apply changes" "Voer de wijzigingen uit"
-::msgcat::mcset nl "General options" "Algemene opties:"
+::msgcat::mcset nl "General options" "Algemene opties"
::msgcat::mcset nl "Default package repository" "Standaard installatie-bron"
::msgcat::mcset nl "Create formats on installation" "Genereer formaten tijdens installatie"
::msgcat::mcset nl "Install macro/font sources" "Installeer bronbestanden voor macros/lettertypen"
@@ -197,9 +197,9 @@
::msgcat::mcset nl "Link destination for programs" "Doelfolder voor programma-symlinks"
::msgcat::mcset nl "Link destination for info docs" "Doelfolder voor symlinks info-bestanden"
::msgcat::mcset nl "Link destination for man pages" "Doelfolder voor symlinks man paginas"
-::msgcat::mcset nl "Create shortcuts on the desktop" "Maak snelkoppelingen op het bureaublad."
+::msgcat::mcset nl "Create shortcuts on the desktop" "Maak snelkoppelingen op het bureaublad"
::msgcat::mcset nl "Install for all users" "Installeer voor alle gebruikers"
-::msgcat::mcset nl "Load default repository:" "Laad standaard installatie-bron."
+::msgcat::mcset nl "Load default repository:" "Laad standaard installatie-bron:"
::msgcat::mcset nl "Paper options" "Papier instellingen"
::msgcat::mcset nl "Default paper for all" "Standaard papier-formaat voor alle"
::msgcat::mcset nl "a4" "a4"
@@ -206,9 +206,9 @@
::msgcat::mcset nl "Default paper for" "Standaard papier-formaat voor"
::msgcat::mcset nl "GUI Language" "GUI taal"
::msgcat::mcset nl "System default" "Systeem-instelling"
-::msgcat::mcset nl "Default language for GUI:" "Standaard-taal voor de GUI"
+::msgcat::mcset nl "Default language for GUI:" "Standaard-taal voor de GUI:"
::msgcat::mcset nl "Changes will take effect after restart" "Wijzigingen treden in werking na herstart"
-::msgcat::mcset nl "Choose directory" "Kies folder:"
+::msgcat::mcset nl "Choose directory" "Kies folder"
::msgcat::mcset nl "Edit default package repositories" "Wijzig de standaard installatie-bronnen voor pakketten"
::msgcat::mcset nl "Specify set of repositories to be used" "Kies de te gebruiken installatie-bronnen"
::msgcat::mcset nl "Delete" "Verwijder"
@@ -221,7 +221,7 @@
::msgcat::mcset nl "Select paper format for" "Selekteer papier-formaat voor"
::msgcat::mcset nl "keep arbitrarily many" "bewaar een onbeperkt aantal"
::msgcat::mcset nl "disable" "deactiveer"
-::msgcat::mcset nl "Loading of remote database failed." "Laden van online database mislukt"
+::msgcat::mcset nl "Loading of remote database failed." "Laden van online database mislukt."
::msgcat::mcset nl "Error message:" "Foutmelding:"
::msgcat::mcset nl "Installation" "Installatie"
::msgcat::mcset nl "Critical updates have been installed.\nProgram will terminate now.\nPlease restart if necessary." "Kern-onderdelen zijn bijgewerkt.\nHet programma zal nu afsluiten.\nHerstart indien nodig."
@@ -248,7 +248,6 @@
::msgcat::mcset nl "not verified" "niet geverifieerd"
::msgcat::mcset nl "Completed" "Klaar"
::msgcat::mcset nl "Running %s failed.\nPlease consult the log window for details." "%s is met een fout geeindigd.\nRaadpleeg het log venster voor details."
-::msgcat::mcset nl "Error" "Fout"
::msgcat::mcset nl "Welcome to TeX Live!" "Welkom bij TeX Live!"
::msgcat::mcset nl "See %s/index.html for links to documentation.\nThe TeX Live web site (http://tug.org/texlive/) contains any updates and corrections. TeX Live is a joint project of the TeX user groups around the world; please consider supporting it by joining the group best for you. The list of groups is available on the web at http://tug.org/usergroups.html." "Zie %s/index.html voor links naar documentatie.\nDe TeX Live web site (http://tug.org/texlive/) bevat\neventuele updates en correcties.\nTeX Live is een gezamenlijk projekt van TeX gebruikersgroepen wereldwijd;\noverweeg ondersteuning door lid te worden van zo'n groep.\nDe lijst van gebruikersgroepen staat op http://tug.org/usergroups.html."
::msgcat::mcset nl "Add %s/texmf-dist/doc/man to MANPATH.\nAdd %s/texmf-dist/doc/info to INFOPATH.\nMost importantly, add %s/bin/%s\nto your PATH for current and future sessions." "Voeg %s/texmf-dist/doc/man toe aan MANPATH.\nVoeg %s/texmf-dist/doc/info toe aan INFOPATH.\nEn bovenal, voeg %s/bin/%s\ntoe aan PATH voor huidige en toekomstige sessies."
@@ -256,8 +255,6 @@
::msgcat::mcset nl "Unexpected closed backend" "Achtergrond-proces onverwacht beeindigd"
::msgcat::mcset nl "TeX Live Installer" "TeX Live Installatie"
::msgcat::mcset nl "Loading..." "Laden..."
-::msgcat::mcset nl "Browse..." "Bladeren..."
-::msgcat::mcset nl "Select or type" "Kies of type"
::msgcat::mcset nl "Cannot be created or cannot be written to" "Kan niet worden aangemaakt of is niet schrijfbaar"
::msgcat::mcset nl "Directory name..." "Folder-naam..."
::msgcat::mcset nl "Change name (slashes not allowed)" "Wijzig naam (slashes niet toegestaan)"
@@ -264,8 +261,10 @@
::msgcat::mcset nl "No slashes allowed" "Slashes niet toegestaan"
::msgcat::mcset nl "TL release component highly recommended!\nAre you sure?" "TL jaar component sterk aanbevolen!\nWeet u het zeker?"
::msgcat::mcset nl "Installation root" "Hoofd TeX-folder"
+::msgcat::mcset nl "Browse..." "Bladeren..."
::msgcat::mcset nl "Toggle year" "Jaar component aan/uit"
::msgcat::mcset nl "Localized directory names will be replaced by their real names" "Aangepaste folder-namen worden vervangen door hun werkelijke namen"
+::msgcat::mcset nl "'~' equals %s, e.g. %s" "'~' betekent %s, bijvoorbeeld %s"
::msgcat::mcset nl "Cannot deselect own platform" "Eigen platform is altijd geselecteerd"
::msgcat::mcset nl "Binaries" "Binaries"
::msgcat::mcset nl "Schemes" "Schema's"
@@ -274,7 +273,7 @@
::msgcat::mcset nl "Other collections" "Andere collecties"
::msgcat::mcset nl "Warning. Not all configured directories are writable!" "Waarschuwing. Niet alle geconfigureerde folders zijn schrijfbaar!"
::msgcat::mcset nl "Symlinks" "Symlinks"
-::msgcat::mcset nl "browse..." "Bladeren..."
+::msgcat::mcset nl "browse..." "bladeren..."
::msgcat::mcset nl "Man pages" "Man pagina's"
::msgcat::mcset nl "Info pages" "Info pagina's"
::msgcat::mcset nl "TeX Live %s Installer" "TeX Live %s Installatie"
@@ -294,12 +293,104 @@
::msgcat::mcset nl "Desktop integration" "Bureaublad-integratie"
::msgcat::mcset nl "File associations" "Koppeling bestandsformaten"
::msgcat::mcset nl "Specify directories" "Specificeer folders"
+::msgcat::mcset nl "Select or type" "Kies of type"
+::msgcat::mcset nl "ok" "ok"
+::msgcat::mcset nl "yes" "ja"
+::msgcat::mcset nl "no" "nee"
+::msgcat::mcset nl "cancel" "afbreken"
+::msgcat::mcset nl "IDLE" "INACTIEF"
+::msgcat::mcset nl "BUSY" "BEZIG"
+::msgcat::mcset nl "Running" "Bezig"
+::msgcat::mcset nl "Idle" "Inactief"
+::msgcat::mcset nl "Needs updating" "Moet worden bijgewerkt"
+::msgcat::mcset nl "Up to date" "Up to date"
+::msgcat::mcset nl "Unknown" "Onbekend"
+::msgcat::mcset nl "A configured repository is unavailable." "Een ingestelde installatie-bron is niet beschikbaar."
+::msgcat::mcset nl "Output" "Uitvoer"
+::msgcat::mcset nl "Errors" "Fouten"
+::msgcat::mcset nl "%s not a repository" "%s is geen installatie-bron"
+::msgcat::mcset nl "Main Repository" "Primaire installatie-bron"
+::msgcat::mcset nl "Current:" "Huidig:"
+::msgcat::mcset nl "New" "Nieuw"
+::msgcat::mcset nl "Any CTAN mirror" "Willekeurige CTAN mirror"
+::msgcat::mcset nl "Specific mirror..." "Specifieke CTAN mirror..."
+::msgcat::mcset nl "Local directory..." "Lokale folder..."
+::msgcat::mcset nl "Save and Load" "Opslaan en laden"
+::msgcat::mcset nl "Abort" "Afbreken"
+::msgcat::mcset nl "Additional repositories" "Externe installatie-bronnen"
+::msgcat::mcset nl "Add tlcontrib" "Voeg tlcontrib toe"
+::msgcat::mcset nl "Packages which cannot be part of TeX Live" "Pakketten die geen onderdeel kunnen uitmaken van TeX Live"
+::msgcat::mcset nl "Tag (optional)" "Kenteken (indien gewenst)"
+::msgcat::mcset nl "Add" "Toevoegen"
+::msgcat::mcset nl "Cannot remove own platform %s" "Eigen platform %s is altijd geselecteerd"
+::msgcat::mcset nl "platform" "platform"
+::msgcat::mcset nl "Apply and close" "Toepassen en sluiten"
+::msgcat::mcset nl "Restore %s to revision %s?" "%s terugdraaien naar %s?"
+::msgcat::mcset nl "No backups configured" "Geen reserve-kopie\u00ebn geconfigureerd"
+::msgcat::mcset nl "No backup directory defined" "Geen folder voor reserve-kopie\u00ebn gedefinieerd"
+::msgcat::mcset nl "Backup directory %s does not exist" "Folder %s voor reserve-kopie\u00ebn bestaat niet"
+::msgcat::mcset nl "No packages in backup directory %s" "Geen pakketten in folder %s voor reserve-kopie\u00ebn"
+::msgcat::mcset nl "Restore from backup" "Herinstalleer vanaf reserve-kopie"
+::msgcat::mcset nl "Package" "Pakket"
+::msgcat::mcset nl "Revision" "Revisie"
+::msgcat::mcset nl "Restore all" "Herstel alle"
+::msgcat::mcset nl "Nothing to do!" "Niets te doen!"
+::msgcat::mcset nl "Update self first!" "Eerst zelf bijwerken!"
+::msgcat::mcset nl "Already installed: %s" "Al ge\u00efnstalleerd: %s"
+::msgcat::mcset nl "Also updating dependencies\n\n%s?" "Ook afhankelijkheden\n%s\nbijwerken?"
+::msgcat::mcset nl "Updating hard dependencies %s anyway. Continue?" "Harde afhankelijkheden %s worden in elk geval bijgewerkt. Doorgaan?"
+::msgcat::mcset nl "Skipped because not installed: %s" "Niet g\u00efnstalleerd: %s\novergeslagen"
+::msgcat::mcset nl "Skipped because already up to date: %s" "Overgeslagen: %s; al up to date"
+::msgcat::mcset nl "Also remove dependencies\n\n%s?" "Verwijder ook afhankelijkheden\n%s?"
+::msgcat::mcset nl "Removing hard dependencies %s anyway. Continue?" "Harde afhankelijkheden %s worden in elk geval verwijderd. Doorgaan?"
+::msgcat::mcset nl "Info" "Info"
+::msgcat::mcset nl "File" "Archief"
+::msgcat::mcset nl "Load default repository" "Laad standaard installatie-bron"
+::msgcat::mcset nl "Exit" "Einde"
+::msgcat::mcset nl "Packages" "Pakketten"
+::msgcat::mcset nl "Update tlmgr" "Werk tlmgr bij"
+::msgcat::mcset nl "Update all" "Alles bijwerken"
+::msgcat::mcset nl "Install marked" "Installeer selektie"
+::msgcat::mcset nl "Update marked" "Werk selektie bij"
+::msgcat::mcset nl "Remove marked" "Verwijder selektie"
+::msgcat::mcset nl "Restore from backup..." "Herinstalleer vanaf reserve-kopie..."
+::msgcat::mcset nl "Regenerate filename database" "Ververs database van bestandsnamen"
+::msgcat::mcset nl "Regenerating filename database..." "Bezig met verversen database..."
+::msgcat::mcset nl "Regenerate formats" "Ververs formaten"
+::msgcat::mcset nl "Rebuilding formats..." "Bezig formaten te verversen..."
+::msgcat::mcset nl "Regenerate fontmaps" "Ververs fontmaps"
+::msgcat::mcset nl "Rebuilding fontmap files..." "Bezig fontmaps te verversen.."
+::msgcat::mcset nl "Change main repository" "Wijzig primaire installatie-bron"
+::msgcat::mcset nl "Paper" "Papier"
+::msgcat::mcset nl "Default repositories" "Ingestelde installatie-bronnen"
+::msgcat::mcset nl "Not loaded" "Niet geladen"
+::msgcat::mcset nl "TL Manager up to date?" "TL Manager up to date?"
+::msgcat::mcset nl "Last tlmgr command:" "Laatste tlmgr opdracht:"
+::msgcat::mcset nl "Type command:" "Typ opdracht:"
+::msgcat::mcset nl "Go" "Uitvoeren"
+::msgcat::mcset nl "Package list" "Lijst van pakketten"
+::msgcat::mcset nl "Installed" "Ge\u00efnstalleerd"
+::msgcat::mcset nl "Updatable" "Nieuwe versie"
+::msgcat::mcset nl "Detail >> Global" "Detail >> Globaal"
+::msgcat::mcset nl "Collections and schemes" "Collecties en schemas"
+::msgcat::mcset nl "Only schemes" "Alleen schemas"
+::msgcat::mcset nl "Mark all" "Kies alles"
+::msgcat::mcset nl "Mark none" "Kies niets"
+::msgcat::mcset nl "Search package names" "Zoek op naam pakket"
+::msgcat::mcset nl "Also search short descriptions" "Zoek ook in korte beschrijvingen"
+::msgcat::mcset nl "Name" "Naam"
+::msgcat::mcset nl "Local Rev. (ver.)" "Lokale rev. (ver.)"
+::msgcat::mcset nl "Remote Rev. (ver.)" "Online rev. (ver.)"
+::msgcat::mcset nl "Description" "Beschrijving"
+::msgcat::mcset nl "Restart self" "Herstart zelf"
+::msgcat::mcset nl "Restart tlmgr" "Herstart tlmgr"
+::msgcat::mcset nl "Show logs" "Toon logs"
::msgcat::mcset nl "basic scheme (plain and latex)" "basis-schema (Plain en latex)"
::msgcat::mcset nl "ConTeXt scheme" "ConTeXt schema"
-::msgcat::mcset nl "full scheme (everything)" "Volledig schema (alles)"
+::msgcat::mcset nl "full scheme (everything)" "volledig schema (alles)"
::msgcat::mcset nl "GUST TeX Live scheme" "GUST TeX Live schema"
-::msgcat::mcset nl "infrastructure-only scheme (no TeX at all)" "Alleen infrastruktuur (helemaal geen TeX)"
-::msgcat::mcset nl "medium scheme (small + more packages and languages)" "Medium schema (klein + meer pakketten en taken)"
+::msgcat::mcset nl "infrastructure-only scheme (no TeX at all)" "alleen infrastruktuur (helemaal geen TeX)"
+::msgcat::mcset nl "medium scheme (small + more packages and languages)" "medium schema (klein + meer pakketten en taken)"
::msgcat::mcset nl "minimal scheme (plain only)" "minimum schema (alleen plain)"
::msgcat::mcset nl "small scheme (basic + xetex, metapost, a few languages)" "klein schema (basis + xetex, metapost, enkele talen)"
::msgcat::mcset nl "teTeX scheme (more than medium, but nowhere near full)" "teTeX schema (meer dan medium, maar lang niet alles)"
Modified: trunk/Master/tlpkg/translations/nl.po
===================================================================
--- trunk/Master/tlpkg/translations/nl.po 2018-10-20 07:22:17 UTC (rev 48954)
+++ trunk/Master/tlpkg/translations/nl.po 2018-10-20 09:17:47 UTC (rev 48955)
@@ -2,8 +2,8 @@
msgstr ""
"Project-Id-Version: TeX Live translation\n"
"Report-Msgid-Bugs-To: tex-live at tug.org\n"
-"POT-Creation-Date: 2018-09-28 02:23+0200\n"
-"PO-Revision-Date: 2018-08-24 12:59+0200\n"
+"POT-Creation-Date: 2018-10-19 20:15+0200\n"
+"PO-Revision-Date: 2018-10-19 20:30+0200\n"
"Last-Translator: Siep Kroonenberg <siepo at cybercomm.nl>\n"
"Language-Team: TL Translation Team <tex-live at tug.org>\n"
"Language: nl\n"
@@ -15,7 +15,7 @@
#: tlpkg/installer/tracked-install.pl:27
msgid "Installation process"
-msgstr "Installatie"
+msgstr "Installatie-proces"
#: tlpkg/installer/tracked-install.pl:41
#: tlpkg/installer/install-menu-wizard.pl:383
@@ -40,15 +40,15 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2469
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2506
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2587
-#: tlpkg/installer/install-tl-gui.tcl:414
-#: tlpkg/installer/install-tl-gui.tcl:530
-#: tlpkg/installer/install-tl-gui.tcl:657
-#: tlpkg/installer/install-tl-gui.tcl:757
-#: tlpkg/installer/install-tl-gui.tcl:842
-#: tlpkg/installer/install-tl-gui.tcl:1021
-#: tlpkg/installer/install-tl-gui.tcl:1073
-#: tlpkg/installer/install-tl-gui.tcl:1190
-#: tlpkg/installer/install-tl-gui.tcl:1330
+#: tlpkg/installer/install-tl-gui.tcl:240
+#: tlpkg/installer/install-tl-gui.tcl:324
+#: tlpkg/installer/install-tl-gui.tcl:426
+#: tlpkg/installer/install-tl-gui.tcl:510
+#: tlpkg/installer/install-tl-gui.tcl:695
+#: tlpkg/installer/install-tl-gui.tcl:745
+#: tlpkg/installer/install-tl-gui.tcl:860
+#: tlpkg/installer/install-tl-gui.tcl:998 tlpkg/TeXLive/tltcl.tcl:359
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1199
msgid "Cancel"
msgstr "Afbreken"
@@ -62,7 +62,7 @@
#: tlpkg/installer/install-menu-wizard.pl:41
#: tlpkg/installer/install-menu-perltk.pl:445
-#: tlpkg/installer/install-tl-gui.tcl:1536
+#: tlpkg/installer/install-tl-gui.tcl:1202
msgid "Default paper size"
msgstr "Standaard papier-formaat"
@@ -105,7 +105,8 @@
#: tlpkg/installer/install-menu-perltk.pl:630
#: tlpkg/installer/install-menu-perltk.pl:676
#: texmf-dist/scripts/texlive/tlmgrgui.pl:544
-#: tlpkg/installer/install-tl-gui.tcl:1374
+#: tlpkg/installer/install-tl-gui.tcl:1040
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2102
msgid "Quit"
msgstr "Stoppen"
@@ -246,7 +247,7 @@
#: tlpkg/installer/install-menu-wizard.pl:423
#: tlpkg/installer/install-menu-wizard.pl:587
msgid "Destination folder:"
-msgstr "Bestemmings-folder"
+msgstr "Bestemmings-folder:"
#: tlpkg/installer/install-menu-wizard.pl:425
#: tlpkg/installer/install-menu-perltk.pl:317
@@ -272,12 +273,12 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2433
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2438
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2443
-#: tlpkg/installer/install-tl-gui.tcl:739
-#: tlpkg/installer/install-tl-gui.tcl:1418
-#: tlpkg/installer/install-tl-gui.tcl:1428
-#: tlpkg/installer/install-tl-gui.tcl:1437
-#: tlpkg/installer/install-tl-gui.tcl:1472
-#: tlpkg/installer/install-tl-gui.tcl:1491
+#: tlpkg/installer/install-tl-gui.tcl:408
+#: tlpkg/installer/install-tl-gui.tcl:1084
+#: tlpkg/installer/install-tl-gui.tcl:1094
+#: tlpkg/installer/install-tl-gui.tcl:1103
+#: tlpkg/installer/install-tl-gui.tcl:1138
+#: tlpkg/installer/install-tl-gui.tcl:1157
msgid "Change"
msgstr "Wijzig"
@@ -292,7 +293,7 @@
#: tlpkg/installer/install-menu-wizard.pl:469
#: tlpkg/installer/install-menu-perltk.pl:1080
msgid "disk space required:"
-msgstr "benodigde schijfruimte"
+msgstr "benodigde schijfruimte:"
#: tlpkg/installer/install-menu-wizard.pl:489
#: tlpkg/installer/install-menu-perltk.pl:1091
@@ -301,7 +302,7 @@
#: tlpkg/installer/install-menu-wizard.pl:534
msgid "This screen allows you to configure some options"
-msgstr "Met dit scherm kunt u enkele opties instellen."
+msgstr "Met dit scherm kunt u enkele opties instellen"
#: tlpkg/installer/install-menu-wizard.pl:579
#, perl-format
@@ -344,13 +345,13 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:700
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1109
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1730
-#: tlpkg/installer/install-tl-gui.tcl:59
msgid "No"
msgstr "Nee"
#: tlpkg/installer/install-menu-wizard.pl:604
#: texmf-dist/scripts/texlive/tlmgrgui.pl:456
-#: tlpkg/installer/install-tl-gui.tcl:1372
+#: tlpkg/installer/install-tl-gui.tcl:1038
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1818
msgid "Install"
msgstr "Installeren"
@@ -357,19 +358,22 @@
#: tlpkg/installer/install-menu-perltk.pl:48
#: tlpkg/installer/install-menu-perltk.pl:1251
#: texmf-dist/scripts/texlive/tlmgrgui.pl:143
-#: tlpkg/installer/install-tl-gui.tcl:1604
+#: tlpkg/installer/install-tl-gui.tcl:600
+#: tlpkg/installer/install-tl-gui.tcl:1270
msgid "None"
msgstr "Geen"
#: tlpkg/installer/install-menu-perltk.pl:49
#: texmf-dist/scripts/texlive/tlmgrgui.pl:144
-#: tlpkg/installer/install-tl-gui.tcl:1604
+#: tlpkg/installer/install-tl-gui.tcl:1270
msgid "Only new"
msgstr "Alleen nieuw"
#: tlpkg/installer/install-menu-perltk.pl:50
#: texmf-dist/scripts/texlive/tlmgrgui.pl:145
-#: tlpkg/installer/install-tl-gui.tcl:1604
+#: tlpkg/installer/install-tl-gui.tcl:1270
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2020
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2031
msgid "All"
msgstr "Alle"
@@ -383,17 +387,17 @@
msgstr "letter"
#: tlpkg/installer/install-menu-perltk.pl:55
-#: tlpkg/installer/install-tl-gui.tcl:1592
+#: tlpkg/installer/install-tl-gui.tcl:1258
msgid "No shortcuts"
msgstr "Geen TeX Live menu"
#: tlpkg/installer/install-menu-perltk.pl:56
-#: tlpkg/installer/install-tl-gui.tcl:1592
+#: tlpkg/installer/install-tl-gui.tcl:1258
msgid "TeX Live menu"
msgstr "TeX Live menu"
#: tlpkg/installer/install-menu-perltk.pl:57
-#: tlpkg/installer/install-tl-gui.tcl:1592
+#: tlpkg/installer/install-tl-gui.tcl:1258
msgid "Launcher entry"
msgstr "Launcher item"
@@ -414,7 +418,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2270
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2332
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2669
-#: tlpkg/installer/install-tl-gui.tcl:668
+#: tlpkg/installer/install-tl-gui.tcl:335
msgid "Warning"
msgstr "Waarschuwing"
@@ -456,14 +460,14 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2466
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2504
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2669
-#: tlpkg/installer/install-tl-gui.tcl:528
-#: tlpkg/installer/install-tl-gui.tcl:647
-#: tlpkg/installer/install-tl-gui.tcl:755
-#: tlpkg/installer/install-tl-gui.tcl:839
-#: tlpkg/installer/install-tl-gui.tcl:1018
-#: tlpkg/installer/install-tl-gui.tcl:1056
-#: tlpkg/installer/install-tl-gui.tcl:1187
-#: tlpkg/installer/install-tl-gui.tcl:1328
+#: tlpkg/installer/install-tl-gui.tcl:314
+#: tlpkg/installer/install-tl-gui.tcl:424
+#: tlpkg/installer/install-tl-gui.tcl:508
+#: tlpkg/installer/install-tl-gui.tcl:692
+#: tlpkg/installer/install-tl-gui.tcl:728
+#: tlpkg/installer/install-tl-gui.tcl:857
+#: tlpkg/installer/install-tl-gui.tcl:996 tlpkg/TeXLive/tltcl.tcl:357
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1198
msgid "Ok"
msgstr "Ok"
@@ -529,7 +533,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1181
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1231
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1240
-#: tlpkg/installer/install-tl-gui.tcl:1445
+#: tlpkg/installer/install-tl-gui.tcl:1111
msgid "Toggle"
msgstr "Wijzig"
@@ -555,27 +559,28 @@
#: tlpkg/installer/install-menu-perltk.pl:440
#: texmf-dist/scripts/texlive/tlmgrgui.pl:513
-#: tlpkg/installer/install-tl-gui.tcl:1527
+#: tlpkg/installer/install-tl-gui.tcl:1193
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1947
msgid "Options"
msgstr "Opties"
#: tlpkg/installer/install-menu-perltk.pl:458
-#: tlpkg/installer/install-tl-gui.tcl:1547
+#: tlpkg/installer/install-tl-gui.tcl:1213
msgid "Allow execution of restricted list of programs via \\write18"
msgstr "Sta uitvoering van een beperkte lijst programmas toe via \\write18"
#: tlpkg/installer/install-menu-perltk.pl:473
-#: tlpkg/installer/install-tl-gui.tcl:1554
+#: tlpkg/installer/install-tl-gui.tcl:1220
msgid "Create all format files"
msgstr "Genereer alle format bestanden"
#: tlpkg/installer/install-menu-perltk.pl:485
-#: tlpkg/installer/install-tl-gui.tcl:1562
+#: tlpkg/installer/install-tl-gui.tcl:1228
msgid "Install font/macro doc tree"
msgstr "Installeer font/macro doc folder"
#: tlpkg/installer/install-menu-perltk.pl:498
-#: tlpkg/installer/install-tl-gui.tcl:1572
+#: tlpkg/installer/install-tl-gui.tcl:1238
msgid "Install font/macro source tree"
msgstr "Installeer font/macro bron folder"
@@ -585,7 +590,7 @@
msgstr "Maak symlinks naar standaard-folders"
#: tlpkg/installer/install-menu-perltk.pl:585
-#: tlpkg/installer/install-tl-gui.tcl:1665
+#: tlpkg/installer/install-tl-gui.tcl:1331
msgid "After install, set CTAN as source for package updates"
msgstr "Kies na installatie CTAN als bron voor nieuwe versies van pakketten"
@@ -641,7 +646,7 @@
#: tlpkg/installer/install-menu-perltk.pl:832
msgid "custom selection of collections"
-msgstr "Eigen selektie van collekties"
+msgstr "eigen selektie van collekties"
#: tlpkg/installer/install-menu-perltk.pl:869
msgid "Select the collections to be installed"
@@ -656,9 +661,9 @@
msgstr "Kies niets"
#: tlpkg/installer/install-menu-perltk.pl:967
-#: tlpkg/installer/install-tl-gui.tcl:1645
+#: tlpkg/installer/install-tl-gui.tcl:1311
msgid "create symlinks in standard directories"
-msgstr "Maak symlinks naar standaard-folders"
+msgstr "maak symlinks naar standaard-folders"
#: tlpkg/installer/install-menu-perltk.pl:970
msgid "binaries to"
@@ -739,7 +744,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:293
msgid "Repository"
-msgstr "installatie-bron"
+msgstr "Installatie-bron"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:294
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2616
@@ -748,11 +753,11 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:294
msgid "none"
-msgstr "Geen"
+msgstr "geen"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:297
msgid "Load default"
-msgstr "Laad standaard installatie-bron."
+msgstr "Laad standaard installatie-bron"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:305
#: texmf-dist/scripts/texlive/tlmgrgui.pl:528
@@ -760,6 +765,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1283
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1705
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2612
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1030
msgid "multiple repositories"
msgstr "meerdere installatie-bronnen"
@@ -772,6 +778,7 @@
msgstr "Laat instellingen zien"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:321
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2017
msgid "Status"
msgstr "Status"
@@ -806,7 +813,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:339
msgid "schemes"
-msgstr "Schema's"
+msgstr "schema's"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:342
msgid "Match"
@@ -833,12 +840,12 @@
msgstr "niet gekozen"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:389
-#: tlpkg/installer/install-tl-gui.tcl:1172
+#: tlpkg/installer/install-tl-gui.tcl:842
msgid "Select all"
msgstr "Kies alles"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:391
-#: tlpkg/installer/install-tl-gui.tcl:1180
+#: tlpkg/installer/install-tl-gui.tcl:850
msgid "Select none"
msgstr "Kies niets"
@@ -871,11 +878,13 @@
msgstr "Herinstalleer eerder verwijderde pakketten"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:451
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1823
msgid "Update"
msgstr "Werk bij"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:460
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2014
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1828
msgid "Remove"
msgstr "Verwijder"
@@ -884,11 +893,13 @@
msgstr "Maak reserve-kopie"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:515
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1938
msgid "Actions"
msgstr "Akties"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:519
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2694
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1967
msgid "Help"
msgstr "Help"
@@ -898,7 +909,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:534
msgid "Load cmd line repository:"
-msgstr "Laad cmd line installatie-bron."
+msgstr "Laad cmd line installatie-bron:"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:537
msgid "Load standard net repository:"
@@ -1011,7 +1022,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:696
msgid "Long description:"
-msgstr "Lange beschrijving;"
+msgstr "Lange beschrijving:"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:699
msgid "Installed:"
@@ -1043,11 +1054,11 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:729
msgid "Primary characterization:"
-msgstr "Primaire omschrijving"
+msgstr "Primaire omschrijving:"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:734
msgid "Secondary characterization:"
-msgstr "Secundaire omschrijving"
+msgstr "Secundaire omschrijving:"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:745
msgid "Collection:"
@@ -1103,7 +1114,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1128
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1137
msgid "General options"
-msgstr "Algemene opties:"
+msgstr "Algemene opties"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1142
msgid "Default package repository"
@@ -1148,10 +1159,10 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1227
msgid "Create shortcuts on the desktop"
-msgstr "Maak snelkoppelingen op het bureaublad."
+msgstr "Maak snelkoppelingen op het bureaublad"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1236
-#: tlpkg/installer/install-tl-gui.tcl:1617
+#: tlpkg/installer/install-tl-gui.tcl:1283
msgid "Install for all users"
msgstr "Installeer voor alle gebruikers"
@@ -1158,7 +1169,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1283
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1285
msgid "Load default repository:"
-msgstr "Laad standaard installatie-bron."
+msgstr "Laad standaard installatie-bron:"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1342
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1351
@@ -1190,7 +1201,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1419
msgid "Default language for GUI:"
-msgstr "Standaard-taal voor de GUI"
+msgstr "Standaard-taal voor de GUI:"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1434
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1463
@@ -1199,7 +1210,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1508
msgid "Choose directory"
-msgstr "Kies folder:"
+msgstr "Kies folder"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1574
msgid "Edit default package repositories"
@@ -1210,6 +1221,7 @@
msgstr "Kies de te gebruiken installatie-bronnen"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1593
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1177
msgid "Delete"
msgstr "Verwijder"
@@ -1255,7 +1267,7 @@
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1890
msgid "Loading of remote database failed."
-msgstr "Laden van online database mislukt"
+msgstr "Laden van online database mislukt."
#: texmf-dist/scripts/texlive/tlmgrgui.pl:1891
msgid "Error message:"
@@ -1329,7 +1341,10 @@
msgstr "Herstel alle pakketten naar de laatste versie"
#: texmf-dist/scripts/texlive/tlmgrgui.pl:2417
-#: tlpkg/installer/install-tl-gui.tcl:411
+#: tlpkg/installer/install-tl-gui.tcl:237
+#: texmf-dist/scripts/tlshell/tlshell.tcl:796
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1326
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1510
msgid "Close"
msgstr "Afsluiten"
@@ -1398,15 +1413,11 @@
"%s is met een fout geeindigd.\n"
"Raadpleeg het log venster voor details."
-#: tlpkg/installer/install-tl-gui.tcl:188
-msgid "Error"
-msgstr "Fout"
-
-#: tlpkg/installer/install-tl-gui.tcl:235 tlpkg/translations/shortdesc.pl:2519
+#: tlpkg/installer/install-tl-gui.tcl:126 tlpkg/translations/shortdesc.pl:2519
msgid "Welcome to TeX Live!"
msgstr "Welkom bij TeX Live!"
-#: tlpkg/installer/install-tl-gui.tcl:238 tlpkg/translations/shortdesc.pl:2522
+#: tlpkg/installer/install-tl-gui.tcl:129 tlpkg/translations/shortdesc.pl:2522
#, tcl-format, perl-format
msgid ""
"See %s/index.html for links to documentation.\n"
@@ -1422,7 +1433,7 @@
"overweeg ondersteuning door lid te worden van zo'n groep.\n"
"De lijst van gebruikersgroepen staat op http://tug.org/usergroups.html."
-#: tlpkg/installer/install-tl-gui.tcl:242 tlpkg/translations/shortdesc.pl:2527
+#: tlpkg/installer/install-tl-gui.tcl:133 tlpkg/translations/shortdesc.pl:2527
#, tcl-format, perl-format
msgid ""
"Add %s/texmf-dist/doc/man to MANPATH.\n"
@@ -1435,49 +1446,40 @@
"En bovenal, voeg %s/bin/%s\n"
"toe aan PATH voor huidige en toekomstige sessies."
-#: tlpkg/installer/install-tl-gui.tcl:254
+#: tlpkg/installer/install-tl-gui.tcl:145
msgid "Error while reading from Perl backend"
msgstr "Fout bij het lezen van het Perl achtergrond-proces"
-#: tlpkg/installer/install-tl-gui.tcl:266
+#: tlpkg/installer/install-tl-gui.tcl:157
msgid "Unexpected closed backend"
msgstr "Achtergrond-proces onverwacht beeindigd"
-#: tlpkg/installer/install-tl-gui.tcl:376
-#: tlpkg/installer/install-tl-gui.tcl:1846
+#: tlpkg/installer/install-tl-gui.tcl:202
+#: tlpkg/installer/install-tl-gui.tcl:1512
msgid "TeX Live Installer"
msgstr "TeX Live Installatie"
-#: tlpkg/installer/install-tl-gui.tcl:378
+#: tlpkg/installer/install-tl-gui.tcl:204
msgid "Loading..."
msgstr "Laden..."
-#: tlpkg/installer/install-tl-gui.tcl:495
-#: tlpkg/installer/install-tl-gui.tcl:736
-msgid "Browse..."
-msgstr "Bladeren..."
-
-#: tlpkg/installer/install-tl-gui.tcl:589
-msgid "Select or type"
-msgstr "Kies of type"
-
-#: tlpkg/installer/install-tl-gui.tcl:621
+#: tlpkg/installer/install-tl-gui.tcl:288
msgid "Cannot be created or cannot be written to"
msgstr "Kan niet worden aangemaakt of is niet schrijfbaar"
-#: tlpkg/installer/install-tl-gui.tcl:633
+#: tlpkg/installer/install-tl-gui.tcl:300
msgid "Directory name..."
msgstr "Folder-naam..."
-#: tlpkg/installer/install-tl-gui.tcl:640
+#: tlpkg/installer/install-tl-gui.tcl:307
msgid "Change name (slashes not allowed)"
msgstr "Wijzig naam (slashes niet toegestaan)"
-#: tlpkg/installer/install-tl-gui.tcl:649
+#: tlpkg/installer/install-tl-gui.tcl:316
msgid "No slashes allowed"
msgstr "Slashes niet toegestaan"
-#: tlpkg/installer/install-tl-gui.tcl:667
+#: tlpkg/installer/install-tl-gui.tcl:334
msgid ""
"TL release component highly recommended!\n"
"Are you sure?"
@@ -1485,92 +1487,96 @@
"TL jaar component sterk aanbevolen!\n"
"Weet u het zeker?"
-#: tlpkg/installer/install-tl-gui.tcl:710
-#: tlpkg/installer/install-tl-gui.tcl:1402
-#: tlpkg/installer/install-tl-gui.tcl:1410
+#: tlpkg/installer/install-tl-gui.tcl:377
+#: tlpkg/installer/install-tl-gui.tcl:1068
+#: tlpkg/installer/install-tl-gui.tcl:1076
msgid "Installation root"
msgstr "Hoofd TeX-folder"
-#: tlpkg/installer/install-tl-gui.tcl:741
+#: tlpkg/installer/install-tl-gui.tcl:405 tlpkg/TeXLive/tltcl.tcl:324
+msgid "Browse..."
+msgstr "Bladeren..."
+
+#: tlpkg/installer/install-tl-gui.tcl:410
msgid "Toggle year"
msgstr "Jaar component aan/uit"
-#: tlpkg/installer/install-tl-gui.tcl:749
+#: tlpkg/installer/install-tl-gui.tcl:418
msgid "Localized directory names will be replaced by their real names"
msgstr "Aangepaste folder-namen worden vervangen door hun werkelijke namen"
-#: tlpkg/installer/install-tl-gui.tcl:826
+#: tlpkg/installer/install-tl-gui.tcl:495
#, tcl-format
msgid "'~' equals %s, e.g. %s"
-msgstr ""
+msgstr "'~' betekent %s, bijvoorbeeld %s"
-#: tlpkg/installer/install-tl-gui.tcl:952
+#: tlpkg/installer/install-tl-gui.tcl:626
msgid "Cannot deselect own platform"
msgstr "Eigen platform is altijd geselecteerd"
-#: tlpkg/installer/install-tl-gui.tcl:983
-#: tlpkg/installer/install-tl-gui.tcl:1317
+#: tlpkg/installer/install-tl-gui.tcl:657
+#: tlpkg/installer/install-tl-gui.tcl:985
msgid "Binaries"
msgstr "Binaries"
-#: tlpkg/installer/install-tl-gui.tcl:1035
+#: tlpkg/installer/install-tl-gui.tcl:707
msgid "Schemes"
msgstr "Schema's"
-#: tlpkg/installer/install-tl-gui.tcl:1120
+#: tlpkg/installer/install-tl-gui.tcl:790
msgid "Collections"
msgstr "Collecties"
-#: tlpkg/installer/install-tl-gui.tcl:1143
+#: tlpkg/installer/install-tl-gui.tcl:813
msgid "Languages"
msgstr "Talen"
-#: tlpkg/installer/install-tl-gui.tcl:1145
+#: tlpkg/installer/install-tl-gui.tcl:815
msgid "Other collections"
msgstr "Andere collecties"
-#: tlpkg/installer/install-tl-gui.tcl:1270
+#: tlpkg/installer/install-tl-gui.tcl:938
msgid "Warning. Not all configured directories are writable!"
msgstr "Waarschuwing. Niet alle geconfigureerde folders zijn schrijfbaar!"
-#: tlpkg/installer/install-tl-gui.tcl:1290
+#: tlpkg/installer/install-tl-gui.tcl:958
msgid "Symlinks"
msgstr "Symlinks"
-#: tlpkg/installer/install-tl-gui.tcl:1313
+#: tlpkg/installer/install-tl-gui.tcl:981
msgid "browse..."
-msgstr "Bladeren..."
+msgstr "bladeren..."
-#: tlpkg/installer/install-tl-gui.tcl:1318
+#: tlpkg/installer/install-tl-gui.tcl:986
msgid "Man pages"
msgstr "Man pagina's"
-#: tlpkg/installer/install-tl-gui.tcl:1319
+#: tlpkg/installer/install-tl-gui.tcl:987
msgid "Info pages"
msgstr "Info pagina's"
-#: tlpkg/installer/install-tl-gui.tcl:1362
+#: tlpkg/installer/install-tl-gui.tcl:1028
#, tcl-format
msgid "TeX Live %s Installer"
msgstr "TeX Live %s Installatie"
-#: tlpkg/installer/install-tl-gui.tcl:1378
+#: tlpkg/installer/install-tl-gui.tcl:1044
msgid "Advanced"
msgstr "Geavanceerd"
-#: tlpkg/installer/install-tl-gui.tcl:1405
+#: tlpkg/installer/install-tl-gui.tcl:1071
msgid "Directories"
msgstr "Folders"
-#: tlpkg/installer/install-tl-gui.tcl:1423
+#: tlpkg/installer/install-tl-gui.tcl:1089
msgid "Local additions"
msgstr "Lokale toevoegingen"
-#: tlpkg/installer/install-tl-gui.tcl:1432
+#: tlpkg/installer/install-tl-gui.tcl:1098
msgid "Per-user additions"
msgstr "Toevoegingen per gebruiker"
-#: tlpkg/installer/install-tl-gui.tcl:1442
+#: tlpkg/installer/install-tl-gui.tcl:1108
msgid ""
"Portable setup:\n"
"May reset TEXMFLOCAL\n"
@@ -1580,50 +1586,455 @@
"Kan TEXMFLOCAL en\n"
"TEXMFHOME terugzetten"
-#: tlpkg/installer/install-tl-gui.tcl:1456
+#: tlpkg/installer/install-tl-gui.tcl:1122
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1289
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1964
msgid "Platforms"
msgstr "Platforms"
-#: tlpkg/installer/install-tl-gui.tcl:1469
+#: tlpkg/installer/install-tl-gui.tcl:1135
msgid "N. of additional platform(s):"
msgstr "Aantal extra platforms:"
-#: tlpkg/installer/install-tl-gui.tcl:1482
+#: tlpkg/installer/install-tl-gui.tcl:1148
msgid "Selections"
msgstr "Selekties"
-#: tlpkg/installer/install-tl-gui.tcl:1487
+#: tlpkg/installer/install-tl-gui.tcl:1153
msgid "Scheme:"
msgstr "Schema:"
-#: tlpkg/installer/install-tl-gui.tcl:1496
+#: tlpkg/installer/install-tl-gui.tcl:1162
msgid "N. of collections:"
msgstr "Aantal collecties:"
-#: tlpkg/installer/install-tl-gui.tcl:1499
+#: tlpkg/installer/install-tl-gui.tcl:1165
msgid "Customize"
msgstr "Aanpassen"
-#: tlpkg/installer/install-tl-gui.tcl:1508
+#: tlpkg/installer/install-tl-gui.tcl:1174
msgid "Disk space required (in MB):"
msgstr "Vereiste schijfruimte (in MB):"
-#: tlpkg/installer/install-tl-gui.tcl:1585
+#: tlpkg/installer/install-tl-gui.tcl:1251
msgid "Adjust searchpath"
msgstr "Zoekpad aanpassen"
-#: tlpkg/installer/install-tl-gui.tcl:1594
+#: tlpkg/installer/install-tl-gui.tcl:1260
msgid "Desktop integration"
msgstr "Bureaublad-integratie"
-#: tlpkg/installer/install-tl-gui.tcl:1606
+#: tlpkg/installer/install-tl-gui.tcl:1272
msgid "File associations"
msgstr "Koppeling bestandsformaten"
-#: tlpkg/installer/install-tl-gui.tcl:1651
+#: tlpkg/installer/install-tl-gui.tcl:1317
msgid "Specify directories"
msgstr "Specificeer folders"
+#: tlpkg/TeXLive/tltcl.tcl:403
+msgid "Select or type"
+msgstr "Kies of type"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:131
+msgid "ok"
+msgstr "ok"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:135
+msgid "yes"
+msgstr "ja"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:137
+msgid "no"
+msgstr "nee"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:141
+msgid "cancel"
+msgstr "afbreken"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:202
+msgid "IDLE"
+msgstr "INACTIEF"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:205
+#: texmf-dist/scripts/tlshell/tlshell.tcl:281
+msgid "BUSY"
+msgstr "BEZIG"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:397
+#: texmf-dist/scripts/tlshell/tlshell.tcl:433
+msgid "Running"
+msgstr "Bezig"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:417
+msgid "Idle"
+msgstr "Inactief"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:528
+msgid "Needs updating"
+msgstr "Moet worden bijgewerkt"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:530
+msgid "Up to date"
+msgstr "Up to date"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:532
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1993
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:676
+msgid "A configured repository is unavailable."
+msgstr "Een ingestelde installatie-bron is niet beschikbaar."
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:786
+msgid "Output"
+msgstr "Uitvoer"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:787
+msgid "Errors"
+msgstr "Fouten"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:921
+#, tcl-format
+msgid "%s not a repository"
+msgstr "%s is geen installatie-bron"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1061
+msgid "Main Repository"
+msgstr "Primaire installatie-bron"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1072
+msgid "Current:"
+msgstr "Huidig:"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1078
+msgid "New"
+msgstr "Nieuw"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1086
+msgid "Any CTAN mirror"
+msgstr "Willekeurige CTAN mirror"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1096
+msgid "Specific mirror..."
+msgstr "Specifieke CTAN mirror..."
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1116
+msgid "Local directory..."
+msgstr "Lokale folder..."
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1122
+msgid "Save and Load"
+msgstr "Opslaan en laden"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1128
+msgid "Abort"
+msgstr "Afbreken"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1138
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1143
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1953
+msgid "Additional repositories"
+msgstr "Externe installatie-bronnen"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1148
+msgid "Add tlcontrib"
+msgstr "Voeg tlcontrib toe"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1150
+msgid "Packages which cannot be part of TeX Live"
+msgstr "Pakketten die geen onderdeel kunnen uitmaken van TeX Live"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1158
+msgid "Tag (optional)"
+msgstr "Kenteken (indien gewenst)"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1179
+msgid "Add"
+msgstr "Toevoegen"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1220
+#, tcl-format
+msgid "Cannot remove own platform %s"
+msgstr "Eigen platform %s is altijd geselecteerd"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1305
+msgid "platform"
+msgstr "platform"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1323
+msgid "Apply and close"
+msgstr "Toepassen en sluiten"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1379
+#, tcl-format
+msgid "Restore %s to revision %s?"
+msgstr "%s terugdraaien naar %s?"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1402
+msgid "No backups configured"
+msgstr "Geen reserve-kopieën geconfigureerd"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1412
+msgid "No backup directory defined"
+msgstr "Geen folder voor reserve-kopieën gedefinieerd"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1417
+#, tcl-format
+msgid "Backup directory %s does not exist"
+msgstr "Folder %s voor reserve-kopieën bestaat niet"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1440
+#, tcl-format
+msgid "No packages in backup directory %s"
+msgstr "Geen pakketten in folder %s voor reserve-kopieën"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1450
+msgid "Restore from backup"
+msgstr "Herinstalleer vanaf reserve-kopie"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1466
+msgid "Package"
+msgstr "Pakket"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1467
+msgid "Revision"
+msgstr "Revisie"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1508
+msgid "Restore all"
+msgstr "Herstel alle"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1526
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1541
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1580
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1627
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1701
+msgid "Nothing to do!"
+msgstr "Niets te doen!"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1538
+msgid "Update self first!"
+msgstr "Eerst zelf bijwerken!"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1600
+#, tcl-format
+msgid "Already installed: %s"
+msgstr "Al geïnstalleerd: %s"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1640
+#, tcl-format
+msgid ""
+"Also updating dependencies\n"
+"\n"
+"%s?"
+msgstr ""
+"Ook afhankelijkheden\n"
+"%s\n"
+"bijwerken?"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1655
+#, tcl-format
+msgid "Updating hard dependencies %s anyway. Continue?"
+msgstr "Harde afhankelijkheden %s worden in elk geval bijgewerkt. Doorgaan?"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1667
+#, tcl-format
+msgid "Skipped because not installed: %s"
+msgstr ""
+"Niet gïnstalleerd: %s\n"
+"overgeslagen"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1670
+#, tcl-format
+msgid "Skipped because already up to date: %s"
+msgstr "Overgeslagen: %s; al up to date"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1705
+#, tcl-format
+msgid ""
+"Also remove dependencies\n"
+"\n"
+"%s?"
+msgstr ""
+"Verwijder ook afhankelijkheden\n"
+"%s?"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1720
+#, tcl-format
+msgid "Removing hard dependencies %s anyway. Continue?"
+msgstr "Harde afhankelijkheden %s worden in elk geval verwijderd. Doorgaan?"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1814
+msgid "Info"
+msgstr "Info"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1885
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1907
+msgid "File"
+msgstr "Archief"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1909
+msgid "Load default repository"
+msgstr "Laad standaard installatie-bron"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1911
+msgid "Exit"
+msgstr "Einde"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1915
+msgid "Packages"
+msgstr "Pakketten"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1919
+msgid "Update tlmgr"
+msgstr "Werk tlmgr bij"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1922
+msgid "Update all"
+msgstr "Alles bijwerken"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1924
+msgid "Install marked"
+msgstr "Installeer selektie"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1927
+msgid "Update marked"
+msgstr "Werk selektie bij"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1930
+msgid "Remove marked"
+msgstr "Verwijder selektie"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1934
+msgid "Restore from backup..."
+msgstr "Herinstalleer vanaf reserve-kopie..."
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1940
+msgid "Regenerate filename database"
+msgstr "Ververs database van bestandsnamen"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1941
+msgid "Regenerating filename database..."
+msgstr "Bezig met verversen database..."
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1942
+msgid "Regenerate formats"
+msgstr "Ververs formaten"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1943
+msgid "Rebuilding formats..."
+msgstr "Bezig formaten te verversen..."
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1944
+msgid "Regenerate fontmaps"
+msgstr "Ververs fontmaps"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1945
+msgid "Rebuilding fontmap files..."
+msgstr "Bezig fontmaps te verversen.."
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1950
+msgid "Change main repository"
+msgstr "Wijzig primaire installatie-bron"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1956
+msgid "Paper"
+msgstr "Papier"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1984
+msgid "Default repositories"
+msgstr "Ingestelde installatie-bronnen"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1988
+msgid "Not loaded"
+msgstr "Niet geladen"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1991
+msgid "TL Manager up to date?"
+msgstr "TL Manager up to date?"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:1996
+msgid "Last tlmgr command:"
+msgstr "Laatste tlmgr opdracht:"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2003
+msgid "Type command:"
+msgstr "Typ opdracht:"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2005
+msgid "Go"
+msgstr "Uitvoeren"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2011
+msgid "Package list"
+msgstr "Lijst van pakketten"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2018
+msgid "Installed"
+msgstr "Geïnstalleerd"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2022
+msgid "Updatable"
+msgstr "Nieuwe versie"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2030
+msgid "Detail >> Global"
+msgstr "Detail >> Globaal"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2033
+msgid "Collections and schemes"
+msgstr "Collecties en schemas"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2035
+msgid "Only schemes"
+msgstr "Alleen schemas"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2043
+msgid "Mark all"
+msgstr "Kies alles"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2045
+msgid "Mark none"
+msgstr "Kies niets"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2053
+msgid "Search package names"
+msgstr "Zoek op naam pakket"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2056
+msgid "Also search short descriptions"
+msgstr "Zoek ook in korte beschrijvingen"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2067
+msgid "Name"
+msgstr "Naam"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2068
+msgid "Local Rev. (ver.)"
+msgstr "Lokale rev. (ver.)"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2069
+msgid "Remote Rev. (ver.)"
+msgstr "Online rev. (ver.)"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2070
+msgid "Description"
+msgstr "Beschrijving"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2104
+msgid "Restart self"
+msgstr "Herstart zelf"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2106
+msgid "Restart tlmgr"
+msgstr "Herstart tlmgr"
+
+#: texmf-dist/scripts/tlshell/tlshell.tcl:2109
+msgid "Show logs"
+msgstr "Toon logs"
+
#: tlpkg/translations/shortdesc.pl:1
msgid "basic scheme (plain and latex)"
msgstr "basis-schema (Plain en latex)"
@@ -1634,7 +2045,7 @@
#: tlpkg/translations/shortdesc.pl:3
msgid "full scheme (everything)"
-msgstr "Volledig schema (alles)"
+msgstr "volledig schema (alles)"
#: tlpkg/translations/shortdesc.pl:4
msgid "GUST TeX Live scheme"
@@ -1642,11 +2053,11 @@
#: tlpkg/translations/shortdesc.pl:5
msgid "infrastructure-only scheme (no TeX at all)"
-msgstr "Alleen infrastruktuur (helemaal geen TeX)"
+msgstr "alleen infrastruktuur (helemaal geen TeX)"
#: tlpkg/translations/shortdesc.pl:6
msgid "medium scheme (small + more packages and languages)"
-msgstr "Medium schema (klein + meer pakketten en taken)"
+msgstr "medium schema (klein + meer pakketten en taken)"
#: tlpkg/translations/shortdesc.pl:7
msgid "minimal scheme (plain only)"
@@ -1824,6 +2235,33 @@
msgid "XeTeX and packages"
msgstr "XeTeX en bijbehorende pakketten"
+#~ msgid "Multiple repositories:"
+#~ msgstr "Meerdere installatie-bronnen:"
+
+#~ msgid "Additional Repositories"
+#~ msgstr "Extra installatie-bronnen"
+
+#~ msgid "Third-party repositories"
+#~ msgstr "Externe installatie-bronnen"
+
+#~ msgid "Change main repository..."
+#~ msgstr "Wijzig primaire installatie-bron"
+
+#~ msgid "Platforms..."
+#~ msgstr "Platforms ..."
+
+#~ msgid "Error"
+#~ msgstr "Fout"
+
+#~ msgid "Repositories"
+#~ msgstr "Installatie-bronnen"
+
+#~ msgid "Change repository..."
+#~ msgstr "Verander standaard installatie-bron..."
+
+#~ msgid "Default repository"
+#~ msgstr "Standaard installatie-bron"
+
#~ msgid "'~' equals %s, e.g.%s"
#~ msgstr "'~' betekent %s, bijvoorbeeld %s"
@@ -2458,9 +2896,6 @@
#~ msgid "Updating packages"
#~ msgstr "Pakketten bijwerken"
-#~ msgid "Update all"
-#~ msgstr "Alles bijwerken"
-
#~ msgid "Update selected"
#~ msgstr "Keuzen bijwerken"
@@ -2537,9 +2972,6 @@
#~ msgid "Update LuaTeX font database"
#~ msgstr "Werk LuaTeX font database bij"
-#~ msgid "File"
-#~ msgstr "Archief"
-
#, fuzzy
#~ msgid "%s collections out of %s (disk space required: %s MB)"
#~ msgstr "%s collecties van %s (disk space required: %s MB)"
More information about the tex-live-commits
mailing list