# Sebastian Hammer, Adam Dickmeiss
#
# $Log: client.tcl,v $
-# Revision 1.63 1995-08-04 13:20:48 adam
+# Revision 1.70 1995-10-12 14:46:52 adam
+# Better record popup windows. Next/prev buttons in popup record windows.
+# The record position in the raw format is much more visible.
+#
+# Revision 1.69 1995/09/21 13:42:54 adam
+# Bug fixes.
+#
+# Revision 1.68 1995/09/21 13:11:49 adam
+# Support of dynamic loading.
+# Test script uses load command if necessary.
+#
+# Revision 1.67 1995/09/20 14:35:19 adam
+# Minor changes.
+#
+# Revision 1.66 1995/08/29 15:30:13 adam
+# Work on GRS records.
+#
+# Revision 1.65 1995/08/24 15:39:09 adam
+# Minor changes.
+#
+# Revision 1.64 1995/08/24 15:33:02 adam
+# Minor changes.
+#
+# Revision 1.63 1995/08/04 13:20:48 adam
# Buttons at the bottom are slightly smaller.
#
# Revision 1.62 1995/08/04 11:32:37 adam
#
if {$tk_version == "3.6"} {
- set tk4 0
+ proc tk4 {} {
+ return 0
+ }
} else {
- set tk4 1
+ proc tk4 {} {
+ return 1
+ }
}
-if {$tk4} {
+if {[tk4]} {
proc configure-enable-e {w n} {
incr n
$w entryconfigure $n -state normal
set noFocus {}
}
-if {! $tk4} {
+if {![tk4]} {
if {[tk colormodel .] == "color"} {
set monoFlag 0
} else {
set setNoLast 0
set cancelFlag 0
set scanEnable 0
-set fullMarcSeq 0
set displayFormat 1
set popupMarcdf 0
set textWrap word
proc read-formats {} {
global displayFormats
global libdir
- set formats [glob -nocomplain ${libdir}/formats/*.tcl]
+ if {[catch {set formats [glob -nocomplain ${libdir}/formats/*.tcl]}]} {
+ set formats ./formats/raw.tcl
+ }
foreach f $formats {
if {[file readable $f]} {
source $f
}
proc dputs {m} {
- puts $m
}
proc set-display-format {f} {
proc top-down-ok-cancel {w ok-action g} {
frame $w.bot.left -relief sunken -border 1
- pack $w.bot.left -side left -expand yes -ipadx 2 -ipady 2 -padx 4 -pady 4
- button $w.bot.left.ok -width 5 -text {Ok} \
+ pack $w.bot.left -side left -expand yes -ipadx 2 -ipady 2 -padx 1 -pady 1
+ button $w.bot.left.ok -width 4 -text {Ok} \
-command ${ok-action}
- pack $w.bot.left.ok -expand yes -ipadx 2 -ipady 2 -padx 3 -pady 3
- button $w.bot.cancel -width 6 -text {Cancel} \
+ pack $w.bot.left.ok -expand yes -ipadx 1 -ipady 1 -padx 2 -pady 2
+ button $w.bot.cancel -width 5 -text {Cancel} \
-command [list destroy $w]
pack $w.bot.cancel -side left -expand yes
set l [llength $buttonList]
frame $w.bot.$i -relief sunken -border 1
- pack $w.bot.$i -side left -expand yes -padx 4 -pady 4
+ pack $w.bot.$i -side left -expand yes -padx 2 -pady 2
button $w.bot.$i.ok -text [lindex $buttonList $i] \
-command [lindex $buttonList [expr $i+1]]
- pack $w.bot.$i.ok -expand yes -ipadx 2 -ipady 2 -padx 2 -pady 2 -side left
+ pack $w.bot.$i.ok -expand yes -padx 2 -pady 2 -side left
incr i 2
while {$i < $l} {
button $w.bot.$i -text [lindex $buttonList $i] \
-command [lindex $buttonList [expr $i+1]]
- pack $w.bot.$i -expand yes -ipadx 2 -ipady 2 -padx 2 -pady 2 -side left
+ pack $w.bot.$i -expand yes -padx 2 -pady 2 -side left
incr i 2
}
if {$g} {
proc about-origin {} {
set w .about-origin-w
global libdir
+ global tk_version
if {[winfo exists $w]} {
destroy $w
label $w.top.a.logo -bitmap @${libdir}/bitmaps/book1
pack $w.top.a.irtcl $w.top.a.logo -side left -expand yes
- set i [z39 implementationName]
+ set i unknown
+ catch {set i [z39 implementationName]}
label $w.top.p.in -text "Implementation name: $i"
- set i [z39 implementationId]
+ catch {set i [z39 implementationId]}
label $w.top.p.ii -text "Implementation id: $i"
- set i [z39 implementationVersion]
+ catch {set i [z39 implementationVersion]}
label $w.top.p.iv -text "Implementation version: $i"
+ set i $tk_version
+ label $w.top.p.tk -text "Tk version: $i"
- pack $w.top.p.in $w.top.p.ii $w.top.p.iv -side top -anchor nw
+ pack $w.top.p.in $w.top.p.ii $w.top.p.iv $w.top.p.tk -side top -anchor nw
about-origin-logo 1
bottom-buttons $w [list {Close} [list destroy $w] \
}
proc popup-marc {sno no b df} {
- global fullMarcSeq
global displayFormats
global popupMarcdf
if {[z39.$sno type $no] != "DB"} {
return
}
- if {$b} {
- set w .full-marc-$fullMarcSeq
- incr fullMarcSeq
- set df $popupMarcdf
- } else {
- set w .full-marc
- set df $popupMarcdf
+ if {$b == -1} {
+ set b 0
+ while {[winfo exists .full-marc$b]} {
+ incr b
+ }
}
- if {[winfo exists $w]} {
- set new 0
- } else {
-
+ set df $popupMarcdf
+ set w .full-marc$b
+ if {![winfo exists $w]} {
toplevelG $w
wm minsize $w 0 0
$w.top.record tag configure marc-id -foreground black
}
$w.top.record tag configure marc-data -foreground black
- set new 1
- }
- $w.top.record delete 0.0 end
- set recordType [z39.$sno recordType $no]
- wm title $w "$recordType record #$no"
+ $w.top.record tag configure marc-head \
+ -font -Adobe-Times-Medium-R-Normal-*-180-* \
+ -background black -foreground white
- if {$new} {
- bind $w.top.record <Return> {destroy .full-marc}
-
pack $w.top.s -side right -fill y
pack $w.top.record -expand yes -fill both
- if {$b} {
- bottom-buttons $w [list \
- {Close} [list destroy $w]] 0
- } else {
- bottom-buttons $w [list \
- {Close} [list destroy $w] \
- {Duplicate} [list popup-marc $sno $no 1 0]] 0
- menubutton $w.bot.formats -text "Format" -menu $w.bot.formats.m
- menu $w.bot.formats.m
- set i 0
- foreach f $displayFormats {
- $w.bot.formats.m add radiobutton -label $f \
- -variable popupMarcdf -value $i \
- -command [list display-$f $sno $no $w.top.record 0]
- incr i
- }
- pack $w.bot.formats -expand yes -ipadx 2 -ipady 2 \
- -padx 3 -pady 3 -side left
- }
+ bottom-buttons $w [list \
+ {Close} [list destroy $w] \
+ {Prev} {} \
+ {Next} {} \
+ {Duplicate} {}] 0
+ menubutton $w.bot.formats -text "Format" -menu $w.bot.formats.m \
+ -relief raised
+ menu $w.bot.formats.m
+ pack $w.bot.formats -expand yes -ipadx 2 -ipady 2 \
+ -padx 3 -pady 3 -side left
} else {
- set i 0
$w.bot.formats.m delete 0 last
- foreach f $displayFormats {
- $w.bot.formats.m add radiobutton -label $f \
- -variable popupMarcdf -value $i \
- -command [list display-$f $sno $no $w.top.record 0]
- incr i
- }
}
+ set i 0
+ foreach f $displayFormats {
+ $w.bot.formats.m add radiobutton -label $f \
+ -variable popupMarcdf -value $i \
+ -command [list popup-marc $sno $no $b 0]
+ incr i
+ }
+ $w.top.record delete 0.0 end
+ set recordType [z39.$sno recordType $no]
+ wm title $w "$recordType record #$no"
+
+ $w.bot.2 configure -command \
+ [list popup-marc $sno [expr $no-1] $b $df]
+ $w.bot.4 configure -command \
+ [list popup-marc $sno [expr $no+1] $b $df]
+ if {$no == 1} {
+ $w.bot.2 configure -state disabled
+ } else {
+ $w.bot.2 configure -state normal
+ }
+ if {[z39.$sno type [expr $no+1]] != "DB"} {
+ $w.bot.4 configure -state disabled
+ } else {
+ $w.bot.4 configure -state normal
+ }
+ $w.bot.6 configure -command [list popup-marc $sno $no -1 0]
set ffunc [lindex $displayFormats $df]
set ffunc "display-$ffunc"
proc set-target-hotlist {olen} {
global hotTargets
- global tk4
if {$olen > 0} {
- if {$tk4} {
+ if {[tk4]} {
.top.target.m delete 7 [expr 7+$olen]
} else {
.top.target.m delete 6 [expr 6+$olen]
global cancelFlag
global setNo
global setNoLast
- global tk4
set cancelFlag 0
set setNo 0
show-message {}
configure-disable-e .top.target.m 1
configure-disable-e .top.target.m 2
- if {$tk4} {
+ if {[tk4]} {
.top.rset.m delete 2 last
} else {
.top.rset.m delete 1 last
.data.record delete 0.0 end
}
-proc title-press {y setno} {
- show-full-marc $setno [expr 1 + [.data.list nearest $y]] 0
-}
-
proc add-title-lines {setno no offset} {
global displayFormats
global displayFormat
}
proc bind-fields {list returnAction escapeAction} {
- global tk4
set max [expr [llength $list]-1]
for {set i 0} {$i < $max} {incr i} {
bind [lindex $list $i] <Return> $returnAction
bind [lindex $list $i] <Escape> $escapeAction
- if {!$tk4} {
+ if {![tk4]} {
bind [lindex $list $i] <Tab> \
[list focus [lindex $list [expr $i+1]]]
bind [lindex $list $i] <Left> \
}
bind [lindex $list $i] <Return> $returnAction
bind [lindex $list $i] <Escape> $escapeAction
- if {!$tk4} {
+ if {![tk4]} {
bind [lindex $list $i] <Tab> [list focus [lindex $list 0]]
bind [lindex $list $i] <Left> [list left-cursor [lindex $list $i]]
bind [lindex $list $i] <Right> [list right-cursor [lindex $list $i]]
}
# Databases ....
- pack $w.top.databases -side left -pady 4 -padx 4 -expand yes -fill both
+ pack $w.top.databases -side left -pady 2 -padx 2 -expand yes -fill both
label $w.top.databases.label -text "Databases"
button $w.top.databases.add -text "Add" \
-command [list add-database $target]
button $w.top.databases.delete -text "Delete" \
-command [list delete-database $target]
- global tk4
- if {! $tk4} {
- listbox $w.top.databases.list -geometry 20x6 \
+ if {! [tk4]} {
+ listbox $w.top.databases.list -geometry 14x6 \
-yscrollcommand "$w.top.databases.scroll set"
} else {
- listbox $w.top.databases.list -width 20 \
+ listbox $w.top.databases.list -width 14 -height 5\
-yscrollcommand "$w.top.databases.scroll set"
}
scrollbar $w.top.databases.scroll -orient vertical -border 1
}
# Transport ...
- pack $w.top.cs-type -pady 4 -padx 4 -side top -fill x
+ pack $w.top.cs-type -pady 2 -padx 2 -side top -fill x
label $w.top.cs-type.label -text "Transport"
radiobutton $w.top.cs-type.tcpip -text "TCP/IP" -anchor w \
-variable csRadioType -value mosi
pack $w.top.cs-type.label $w.top.cs-type.tcpip $w.top.cs-type.mosi \
- -padx 4 -side top -fill x
+ -padx 2 -side top -fill x
# Protocol ...
- pack $w.top.protocol -pady 4 -padx 4 -side top -fill x
+ pack $w.top.protocol -pady 2 -padx 2 -side top -fill x
label $w.top.protocol.label -text "Protocol"
radiobutton $w.top.protocol.z39v2 -text "Z39.50" -anchor w \
-variable protocolRadioType -value SR
pack $w.top.protocol.label $w.top.protocol.z39v2 $w.top.protocol.sr \
- -padx 4 -side top -fill x
+ -padx 2 -side top -fill x
# Query ...
- pack $w.top.query -pady 4 -padx 4 -side top -fill x
+ pack $w.top.query -pady 2 -padx 2 -side top -fill x
label $w.top.query.label -text "Query support"
checkbutton $w.top.query.c1 -text "RPN query" -anchor w -variable RPNCheck
pack $w.top.query.label -side top
pack $w.top.query.c1 $w.top.query.c2 $w.top.query.c3 \
- -padx 4 -side top -fill x
+ -padx 2 -side top -fill x
# Ok-cancel
bottom-buttons $w [list {Ok} [list protocol-setup-action $target] \
set windowGeometry(.) [wm geometry .]
- set f [open "~/.clientrc.tcl" w]
-
+ if {[catch {set f [open ~/.clientrc.tcl w]}]} {
+ return
+ }
puts $f "set hotTargets \{ $hotTargets \}"
puts $f "set textWrap $textWrap"
puts $f "set displayFormat $displayFormat"
{Content type} 1034
{Anywhere} 1035
}
- global tk4
set w .index-setup
global useTmpValue
set l [llength $attr]
}
incr lno
}
- if {$tk4} {
+ if {[tk4]} {
$w.top.use.list selection clear 0 end
$w.top.use.list selection set $s $s
} else {
global completenessTmpValue
global positionTmpValue
global useTmpValue
- global tk4
set relationTmpValue 0
set truncationTmpValue 0
set structureTmpValue 0
pack $w.top.use -side left -pady 6 -padx 6 -fill y
label $w.top.use.label -text "Use"
- if {$tk4} {
+ if {[tk4]} {
listbox $w.top.use.list -width 26 \
-yscrollcommand "$w.top.use.scroll set"
} else {
global queryButtonsTmp
global queryInfoTmp
global queryIndexTmp
- global tk4
set queryIndexTmp 0
set queryName [lindex $queryTypes $queryNo]
pack $w.top.index.list -side left -fill both -expand yes -padx 2 -pady 2
pack $w.top.index.scroll -side right -fill y -padx 2 -pady 2
- if {$tk4} {
+ if {[tk4]} {
$w.top.index.list selection clear 0 end
$w.top.index.list selection set 0 0
} else {
proc index-focus-in {w i} {
global curIndexEntry
- global tk4
- if {! $tk4} {
+ if {! [tk4]} {
$w.$i configure -background red
}
set curIndexEntry $i
}
proc index-lines {w realOp buttonInfo queryInfo handle} {
- global tk4
set i 0
foreach b $buttonInfo {
if {! [winfo exists $w.$i]} {
- if {$tk4} {
+ if {[tk4]} {
frame $w.$i -border 0
} else {
frame $w.$i -background white -border 1
pack $w.$i.l -side left
pack $w.$i.e -side left -fill x -expand yes
pack $w.$i -side top -fill x -padx 2 -pady 2
- if {!$tk4} {
+ if {![tk4]} {
bind $w.$i.e <Left> [list left-cursor $w.$i.e]
bind $w.$i.e <Right> [list right-cursor $w.$i.e]
}
if {! $realOp} {
return
}
- if {! $tk4} {
+ if {! [tk4]} {
set j 0
incr i -1
while {$j < $i} {
}
}
if {$i >= 0} {
- if {! $tk4} {
+ if {! [tk4]} {
bind $w.$i.e <Tab> "focus $w.0.e"
}
focus $w.0.e
.top.options.m.syntax add separator
.top.options.m.syntax add radiobutton -label "SUTRS" \
-value SUTRS -variable recordSyntax
+.top.options.m.syntax add separator
+.top.options.m.syntax add radiobutton -label "GRS1" \
+ -value GRS1 -variable recordSyntax
menubutton .top.help -text "Help" -menu .top.help.m
menu .top.help.m
index-lines .lines 1 $queryButtonsFind [lindex $queryInfo 0] activate-index
-button .mid.search -width 7 -text {Search} -command {search-request 0} \
+button .mid.search -text Search -command {search-request 0} \
-state disabled
-button .mid.scan -width 7 -text {Scan} \
+button .mid.scan -text Scan \
-command scan-request -state disabled
-button .mid.present -width 7 -text {Present} -command [list present-more 10] \
+button .mid.present -text {Present} -command [list present-more 10] \
-state disabled
-button .mid.clear -width 7 -text {Clear} -command index-clear
+button .mid.clear -text Clear -command index-clear
pack .mid.search .mid.scan .mid.present .mid.clear -side left \
- -fill y -padx 5 -pady 3
+ -fill y -pady 1
text .data.record -height 2 -width 20 -wrap none \
-yscrollcommand [list .data.scroll set] -wrap $textWrap
scrollbar .data.scroll -command [list .data.record yview]
-if {$tk4} {
+if {[tk4]} {
.data.record configure -takefocus 0
.data.scroll configure -takefocus 0
}
.data.record tag configure marc-id -foreground black
}
.data.record tag configure marc-data -foreground black
+.data.record tag configure marc-head \
+ -font -Adobe-Times-Medium-R-Normal-*-180-* \
+ -foreground white -background black
-button .bot.logo -bitmap @${libdir}/bitmaps/book1 -command cancel-operation
-if {$tk4} {
+button .bot.logo -bitmap @${libdir}/bitmaps/book1 -command cancel-operation
+if {[tk4]} {
.bot.logo configure -takefocus 0
}
frame .bot.a
pack .bot.a -side left -fill x
-pack .bot.logo -side right -padx 2 -pady 2
+pack .bot.logo -side right -padx 2 -pady 2 -ipadx 1
message .bot.a.target -text "" -aspect 1000 -border 1
pack .bot.a.target -side top -anchor nw -padx 2 -pady 2
pack .bot.a.status .bot.a.set .bot.a.message \
- -side left -padx 2 -pady 2
+ -side left -padx 2 -pady 2 -ipadx 1 -ipady 1
-ir z39
-z39 logLevel all
+if {[catch {ir z39}]} {
+ set e [info sharedlibextension]
+ puts -nonewline "Loading irtcl$e ..."
+ load irtcl$e irtcl
+ ir z39
+ puts "ok"
+}
+#z39 logLevel all
show-logo 1