#
# $Log: client.tcl,v $
-# Revision 1.19 1995-04-18 16:11:50 adam
+# Revision 1.22 1995-05-26 11:44:09 adam
+# Bugs fixed. More work on MARC utilities and queries. Test
+# client is up-to-date again.
+#
+# Revision 1.21 1995/05/11 15:34:46 adam
+# Scan request changed a bit. This version works with RLG.
+#
+# Revision 1.20 1995/04/21 16:31:57 adam
+# New radiobutton: protocol (z39v2/SR).
+#
+# Revision 1.19 1995/04/18 16:11:50 adam
# First version of graphical Scan. Some work on query-by-form.
#
# Revision 1.18 1995/04/10 10:50:22 adam
set hotInfo {}
set busy 0
-set profile(Default) {{} {} {210} {} 16384 8192 tcpip {}}
+set profile(Default) {{} {} {210} {} 16384 8192 tcpip {} 1 {} {} z39v2}
set hostid Default
set settingsChanged 0
set setNo 0
set queryTypes {Simple}
set queryButtons { { {I 0} {I 1} {I 2} } }
-set queryInfo { { {Title ti} {Author au} {Subject sh} {Any any} } }
+set queryInfo { { {Title {1=4 4=1 6=1}} {Author {1=1 4=1 6=1}} \
+ {Subject {1=21 4=1 6=1}} {Any {1=1016 4=1 6=1}} } }
-wm minsize . 300 250
+wm minsize . 350 250
if {[file readable "~/.tk-c"]} {
source "~/.tk-c"
frame $w.top -relief raised -border 1
frame $w.bot -relief raised -border 1
- pack $w.top $w.bot -side top -fill both -expand yes
+ pack $w.top -side top -fill both -expand yes
+ pack $w.bot -fill both
}
proc top-down-ok-cancel {w ok-action g} {
}
incr no
- set r [z39.$setNo recordMarc $no line * * *]
+ set r [z39.$setNo getMarc $no list * * *]
$w.top.record tag configure marc-tag -foreground blue
$w.top.record tag configure marc-data -foreground black
z39 disconnect
z39 comstack [lindex $profile($target) 6]
- # z39 idAuthentication [lindex $profile($target) 3]
+ z39 idAuthentication [lindex $profile($target) 3]
z39 maximumRecordSize [lindex $profile($target) 4]
z39 preferredMessageSize [lindex $profile($target) 5]
puts -nonewline "maximumRecordSize="
global setNo
incr setNo
- ir-set z39.$setNo
+ ir-set z39.$setNo z39
set fname [.load-set.top.filename.entry get]
destroy .load-set
.top.search configure -state normal
.mid.search configure -state normal
.mid.scan configure -state normal
+ if {![z39 initResult]} {
+ set u [z39 userInformationField]
+ close-target
+ tkerror "Connection rejected by target: $u"
+ }
}
proc search-request {} {
return
}
incr setNo
- ir-set z39.$setNo
+ ir-set z39.$setNo z39
-
- if {[lindex $profile($target) 10]} {
+ if {[lindex $profile($target) 10] == 1} {
z39.$setNo setName $setNo
+ puts "setName=${setNo}"
} else {
z39.$setNo setName Default
+ puts "setName=Default"
}
- if {[lindex $profile($target) 8]} {
- z39 query rpn
+ if {[lindex $profile($target) 8] == 1} {
+ z39.$setNo queryType rpn
}
- if {[lindex $profile($target) 9]} {
- z39 query ccl
+ if {[lindex $profile($target) 9] == 1} {
+ z39.$setNo queryType ccl
}
z39 callback {search-response}
z39.$setNo search $query
top-down-ok-cancelx $w [list {Close} [list destroy $w]] 0
}
- z39.scan scan 0
+ z39.scan numberOfTermsRequested 100
+ z39.scan scan "@attr 1=4 0"
show-status {Scan} 1
}
proc add-title-lines {setno no offset} {
for {set i 0} {$i < $no} {incr i} {
set o [expr $i + $offset]
- set title [lindex [z39.$setno recordMarc $o field 245 * a] 0]
- set year [lindex [z39.$setno recordMarc $o field 260 * c] 0]
+ set title [lindex [z39.$setno getMarc $o field 245 * a] 0]
+ set year [lindex [z39.$setno getMarc $o field 260 * c] 0]
set nostr [format "%5d" $o]
.data.list insert end "$nostr $title - $year"
}
proc protocol-setup-action {target} {
global profile
global csRadioType
+ global protocolRadioType
global settingsChanged
global RPNCheck
global CCLCheck
$b \
$RPNCheck \
$CCLCheck \
- $ResultSetCheck ]
+ $ResultSetCheck \
+ $protocolRadioType ]
cascade-target-list
puts $profile($target)
global profile
global csRadioType
+ global protocolRadioType
global RPNCheck
global CCLCheck
global ResultSetCheck
frame $w.top.maximumRecordSize
frame $w.top.preferredMessageSize
frame $w.top.cs-type -relief ridge -border 2
+ frame $w.top.protocol -relief ridge -border 2
frame $w.top.query -relief ridge -border 2
frame $w.top.databases -relief ridge -border 2
entry-fields $w.top {description host port idAuthentication \
maximumRecordSize preferredMessageSize} \
- {{Description:} {Host:} {Port:} {Id Authentification:} \
+ {{Description:} {Host:} {Port:} {Id Authentication:} \
{Maximum Record Size:} {Preferred Message Size:}} \
[list protocol-setup-action $target] [list destroy $w]
set RPNCheck [lindex $profile($target) 8]
set CCLCheck [lindex $profile($target) 9]
set ResultSetCheck [lindex $profile($target) 10]
+ set protocolRadioType [lindex $profile($target) 11]
+ if {$protocolRadioType == ""} {
+ set protocolRadioType z39v2
+ }
# Databases ....
- pack $w.top.databases -side left -pady 6 -padx 6 -expand yes -fill x
+ pack $w.top.databases -side left -pady 6 -padx 6 -expand yes -fill both
label $w.top.databases.label -text "Databases"
button $w.top.databases.add -text "Add" \
}
# Transport ...
- pack $w.top.cs-type -pady 6 -padx 6 -side top
+ pack $w.top.cs-type -pady 6 -padx 6 -side top -fill x
label $w.top.cs-type.label -text "Transport"
- radiobutton $w.top.cs-type.tcpip -text "TCP/IP" \
+ radiobutton $w.top.cs-type.tcpip -text "TCP/IP" -anchor w \
-command {puts tcp/ip} -variable csRadioType -value tcpip
- radiobutton $w.top.cs-type.mosi -text "MOSI" \
+ radiobutton $w.top.cs-type.mosi -text "MOSI" -anchor w\
-command {puts mosi} -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
+ # Protocol ...
+ pack $w.top.protocol -pady 6 -padx 6 -side top -fill x
+
+ label $w.top.protocol.label -text "Protocol"
+ radiobutton $w.top.protocol.z39v2 -text "Z39.50" -anchor w \
+ -command {puts z39v2} -variable protocolRadioType -value z39v2
+ radiobutton $w.top.protocol.sr -text "SR" -anchor w \
+ -command {puts sr} -variable protocolRadioType -value sr
+
+ pack $w.top.protocol.label $w.top.protocol.z39v2 $w.top.protocol.sr \
+ -padx 4 -side top -fill x
+
# Query ...
- pack $w.top.query -pady 6 -padx 6 -side top
+ pack $w.top.query -pady 6 -padx 6 -side top -fill x
- label $w.top.query.label -text "Query support" -anchor e
- checkbutton $w.top.query.c1 -text "RPN query" -variable RPNCheck
- checkbutton $w.top.query.c2 -text "CCL query" -variable CCLCheck
- checkbutton $w.top.query.c3 -text "Result sets" -variable ResultSetCheck
+ label $w.top.query.label -text "Query support"
+ checkbutton $w.top.query.c1 -text "RPN query" -anchor w -variable RPNCheck
+ checkbutton $w.top.query.c2 -text "CCL query" -anchor w -variable CCLCheck
+ checkbutton $w.top.query.c3 -text "Result sets" -anchor w -variable ResultSetCheck
pack $w.top.query.label -side top
pack $w.top.query.c1 $w.top.query.c2 $w.top.query.c3 \
set term [string trim [.lines.$i.e get]]
if {$term != ""} {
set attr [lindex [lindex $queryInfoFind [lindex $b 1]] 1]
- if {$qs != ""} {
- set qs "${qs} and "
+
+ set term "\{${term}\}"
+ foreach a $attr {
+ set term "@attr $a ${term}"
}
- if {$attr != ""} {
- set qs "${qs}${attr}="
+ if {$qs != ""} {
+ set qs "@and ${qs} ${term}"
+ } else {
+ set qs $term
}
- set qs "${qs}(${term})"
}
incr i
}
}
listbuttonx $w.$i.l [lindex $b 1] $queryInfo $handle $i
- if {! [winfo exists $w.$i.e]} {
- if {$realOp} {
- entry $w.$i.e -width 32 -relief sunken
- }
- pack $w.$i.l -side left
- if {$realOp} {
+ if {$realOp} {
+ if {! [winfo exists $w.$i.e]} {
+ entry $w.$i.e -width 32 -relief sunken -border 1
+ bind $w.$i.e <FocusIn> [list $w.$i configure \
+ -background red]
+ bind $w.$i.e <FocusOut> [list $w.$i configure \
+ -background white]
+ 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
+ bind $w.$i.e <Left> [list left-cursor $w.$i.e]
+ bind $w.$i.e <Right> [list right-cursor $w.$i.e]
+ bind $w.$i.e <Return> search-request
}
+ } else {
+ pack $w.$i.l -side left
pack $w.$i -side top -fill x -padx 2 -pady 2
}
- if {$realOp} {
- bind $w.$i.e <Left> [list left-cursor $w.$i.e]
- bind $w.$i.e <Right> [list right-cursor $w.$i.e]
- bind $w.$i.e <Return> search-request
- }
incr i
}
set j $i
incr i -1
while {$j < $i} {
set k [expr $j+1]
- bind $w.$j.e <Tab> "focus $w.$k.e \n
- $w.$k configure -background red \n
- $w.$j configure -background white"
+ bind $w.$j.e <Tab> "focus $w.$k.e"
set j $k
}
if {$i >= 0} {
- bind $w.$i.e <Tab> "focus $w.0.e \n
- $w.0 configure -background red \n
- $w.$i configure -background white"
+ bind $w.$i.e <Tab> "focus $w.0.e"
focus $w.0.e
- $w.0 configure -background red
}
}