# Sebastian Hammer, Adam Dickmeiss
#
# $Log: client.tcl,v $
-# Revision 1.69 1995-09-21 13:42:54 adam
+# Revision 1.81 1995-10-19 10:34:43 adam
+# More configurable client.
+#
+# Revision 1.80 1995/10/18 17:20:32 adam
+# Work on target setup in client.tcl.
+#
+# Revision 1.79 1995/10/18 16:42:37 adam
+# New settings: smallSetElementSetNames and mediumSetElementSetNames.
+#
+# Revision 1.78 1995/10/18 15:45:36 quinn
+# *** empty log message ***
+#
+# Revision 1.77 1995/10/18 15:37:46 adam
+# Piggy-back present.
+#
+# Revision 1.76 1995/10/18 15:15:20 adam
+# Fixed bug.
+#
+# Revision 1.75 1995/10/17 14:18:05 adam
+# Minor changes in presentation formats.
+#
+# Revision 1.74 1995/10/17 12:18:57 adam
+# Bug fix: when target connection closed, the connection was not
+# properly reestablished.
+#
+# Revision 1.73 1995/10/17 10:58:06 adam
+# More work on presentation formats.
+#
+# Revision 1.72 1995/10/16 17:00:52 adam
+# New setting: elementSetNames.
+# Various client improvements. Medium presentation format looks better.
+#
+# Revision 1.71 1995/10/13 15:35:27 adam
+# Relational operators may be used in search entries - changes
+# in proc index-query.
+#
+# 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
set hotInfo {}
set busy 0
-set profile(Default) {{} {} {210} {} 16384 8192 tcpip {} 1 {} {} Z39 1}
+set profile(Default) {{} {} {210} {} 50000 30000 tcpip {} 1 {} {} Z39 1 2 0 0 4}
set hostid Default
set settingsChanged 0
set setNo 0
set setNoLast 0
set cancelFlag 0
set scanEnable 0
-set fullMarcSeq 0
set displayFormat 1
set popupMarcdf 0
set textWrap word
set recordSyntax None
+set elementSetNames None
set delayRequest {}
set queryTypes {Simple}
bottom-buttons $w [list {Close} [list destroy $w]] 1
}
+if {[file readable "clientrc.tcl"]} {
+ source "clientrc.tcl"
+} else {
+ if {[file readable "${libdir}/clientrc.tcl"]} {
+ source "${libdir}/clientrc.tcl"
+ }
+}
+
+if {[file readable "~/.clientrc.tcl"]} {
+ source "~/.clientrc.tcl"
+}
+
+set queryButtonsFind [lindex $queryButtons 0]
+set queryInfoFind [lindex $queryInfo 0]
+
proc read-formats {} {
global displayFormats
global libdir
}
proc dputs {m} {
+ puts $m
}
proc set-display-format {f} {
bind $w <Destroy> [list destroyGW $w]
}
-if {[file readable "clientrc.tcl"]} {
- source "clientrc.tcl"
-} else {
- if {[file readable "${libdir}/clientrc.tcl"]} {
- source "${libdir}/clientrc.tcl"
- }
-}
-
-if {[file readable "~/.clientrc.tcl"]} {
- source "~/.clientrc.tcl"
-}
-
-set queryButtonsFind [lindex $queryButtons 0]
-set queryInfoFind [lindex $queryInfo 0]
proc top-down-window {w} {
frame $w.top -relief raised -border 1
proc about-origin {} {
set w .about-origin-w
global libdir
+ global tk_version
if {[winfo exists $w]} {
destroy $w
label $w.top.p.ii -text "Implementation id: $i"
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
+
+ $w.top.record tag configure marc-pref \
+ -font -Adobe-Times-Medium-R-Normal-*-180-* \
+ -foreground blue
+ $w.top.record tag configure marc-text \
+ -font -Adobe-Times-Medium-R-Normal-*-180-* \
+ -foreground black
+ $w.top.record tag configure marc-it \
+ -font -Adobe-Times-Medium-I-Normal-*-180-* \
+ -foreground black
- 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"
}
foreach n [array names profile] {
if {$n == $target} {
+ destroy .target-define
protocol-setup $n
return
}
}
set seq [lindex $profile(Default) 12]
dputs "seq=${seq}"
+ dputs $profile(Default)
set profile($target) $profile(Default)
set profile(Default) [lreplace $profile(Default) 12 12 [incr seq]]
-
+
protocol-setup $target
destroy .target-define
}
proc open-target {target base} {
global profile
global hostid
+ global presentChunk
z39 disconnect
z39 comstack [lindex $profile($target) 6]
} else {
z39 databaseNames $base
}
+ set x [lindex $profile($target) 13]
+ if {$x == ""} {
+ set x 2
+ }
+ z39 largeSetLowerBound $x
+
+ set x [lindex $profile($target) 14]
+ if {$x == ""} {
+ set x 0
+ }
+ z39 smallSetUpperBound $x
+
+ set x [lindex $profile($target) 15]
+ if {$x == ""} {
+ set x 0
+ }
+ z39 mediumSetPresentNumber $x
+
+ set presentChunk [lindex $profile($target) 16]
+ if {$presentChunk == ""} {
+ set presentChunk 4
+ }
+
z39 failback [list fail-response $target]
z39 callback [list connect-response $target $base]
update idletasks
global cancelFlag
global scanEnable
+ dputs {init-reponse}
if {$cancelFlag} {
close-target
return
global cancelFlag
global delayRequest
global recordSyntax
+ global elementSetNames
set target $hostid
+ if {[z39 connect] == ""} {
+ return
+ }
dputs "search-request"
show-message {}
if {!$bflag && $busy} {
} else {
z39.$setNo preferredRecordSyntax $recordSyntax
}
+ if {$elementSetNames == "None" } {
+ z39.$setNo elementSetNames {}
+ z39.$setNo smallSetElementSetNames {}
+ z39.$setNo mediumSetElementSetNames {}
+ } else {
+ z39.$setNo elementSetNames $elementSetNames
+ z39.$setNo smallSetElementSetNames $elementSetNames
+ z39.$setNo mediumSetElementSetNames $elementSetNames
+ }
z39 callback {search-response}
z39.$setNo search $query
show-status Searching 1 0
global cancelFlag
global busy
global delayRequest
+ global presentChunk
+
dputs "In search-response"
if {$cancelFlag} {
if {$setMax > 20} {
set setMax 20
}
- z39 callback {present-response}
- z39.$setNo present $setOffset 1
- show-status Retrieving 1 0
+ set no [z39.$setNo numberOfRecordsReturned]
+ dputs "Returned $no records, setOffset $setOffset"
+ add-title-lines $setNo $no $setOffset
+ set setOffset [expr $setOffset + $no]
+
+ set toGet [expr $setMax - $setOffset + 1]
+ if {$toGet > 0} {
+ if {$setOffset == 1} {
+ set toGet 1
+ } elseif {$toGet > $presentChunk} {
+ set toGet $presentChunk
+ }
+ z39 callback {present-response}
+ z39.$setNo present $setOffset $toGet
+ show-status Retrieving 1 0
+ }
}
proc present-more {number} {
global busy
global cancelFlag
global delayRequest
+ global presentChunk
dputs "present-more"
if {$cancelFlag} {
if {$toGet <= 0} {
return
}
- if {$toGet > 3} {
- set toGet 3
+ if {$toGet > $presentChunk} {
+ set toGet $presentChunk
}
z39.$setNo present $setOffset $toGet
show-status Retrieving 1 0
.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
global setNo
global busy
+ dputs "add-title-lines offset=${offset} no=${no}"
if {$setno != -1} {
set setNo $setno
} else {
set setno $setNo
}
if {$offset == 1} {
+
.bot.a.set configure -text $setno
.data.record delete 0.0 end
}
set o [expr $i + $offset]
set type [z39.$setno type $o]
if {$type == ""} {
+ dputs "no more at $o"
break
}
.data.record tag bind r$o <Any-Enter> {}
global setMax
global cancelFlag
global delayRequest
+ global presentChunk
dputs "In present-response"
set no [z39.$setNo numberOfRecordsReturned]
if {$no > 0 && $setOffset <= $setMax} {
dputs "present-request from ${setOffset}"
set toGet [expr $setMax - $setOffset + 1]
- if {$toGet > 3} {
- set toGet 3
+ if {$toGet > $presentChunk} {
+ set toGet $presentChunk
}
z39.$setNo present $setOffset $toGet
} else {
top-down-ok-cancel $w {define-target-action} 1
}
-proc protocol-setup-delete {target} {
+proc protocol-setup-delete {target w} {
global profile
global settingsChanged
set a [alert "Are you sure you want to delete the target \
definition $target ?"]
if {$a} {
- set wno [lindex $profile($target) 12]
- set w .setup-${wno}
destroy $w
unset profile($target)
set settingsChanged 1
}
}
-proc protocol-setup-action {target} {
+proc protocol-setup-action {target w} {
global profile
- global csRadioType
- global protocolRadioType
global settingsChanged
- global RPNCheck
- global CCLCheck
- global ResultSetCheck
+ global targetS
- set wno [lindex $profile($target) 12]
- set w .setup-${wno}
-
- set b {}
+ set dataBases {}
set settingsChanged 1
set len [$w.top.databases.list size]
for {set i 0} {$i < $len} {incr i} {
- lappend b [$w.top.databases.list get $i]
+ lappend dataBases [$w.top.databases.list get $i]
}
+ set wno [lindex $profile($target) 12]
+
set profile($target) [list [$w.top.description.entry get] \
[$w.top.host.entry get] \
[$w.top.port.entry get] \
[$w.top.idAuthentication.entry get] \
- [$w.top.maximumRecordSize.entry get] \
- [$w.top.preferredMessageSize.entry get] \
- $csRadioType \
- $b \
- $RPNCheck \
- $CCLCheck \
- $ResultSetCheck \
- $protocolRadioType \
- $wno]
+ $targetS($target,MRS) \
+ $targetS($target,PMS) \
+ $targetS($target,csType) \
+ $dataBases \
+ $targetS($target,RPN) \
+ $targetS($target,CCL) \
+ $targetS($target,ResultSets) \
+ $targetS($target,protocolType) \
+ $wno \
+ $targetS($target,LSLB) \
+ $targetS($target,SSUB) \
+ $targetS($target,MSPN) \
+ $targetS($target,presentChunk) ]
cascade-target-list
delete-target-hotlist $target
wm geometry $window +${x}+${y}
}
-proc add-database-action {target} {
+proc add-database-action {target w} {
global profile
- set wno [lindex $profile($target) 12]
- set w .setup-${wno}
-
$w.top.databases.list insert end \
[.database-select.top.database.entry get]
destroy .database-select
}
-proc add-database {target} {
+proc add-database {target wp} {
global profile
set w .database-select
toplevel $w
set oldFocus [focus]
- set wno [lindex $profile($target) 12]
- place-force $w .setup-${wno}
+ place-force $w $wp
top-down-window $w
entry-fields $w.top {database} \
{{Database to add:}} \
- [list add-database-action $target] {destroy .database-select}
+ [list add-database-action $target $wp] {destroy .database-select}
- top-down-ok-cancel $w [list add-database-action $target] 1
+ top-down-ok-cancel $w [list add-database-action $target $wp] 1
focus $oldFocus
}
-proc delete-database {target} {
+proc delete-database {target w} {
global profile
- set wno [lindex $profile($target) 12]
- set w .setup-${wno}
set l {}
foreach i [$w.top.databases.list curselection] {
set b [$w.top.databases.list get $i]
proc protocol-setup {target} {
global profile
- global csRadioType
- global protocolRadioType
- global RPNCheck
- global CCLCheck
- global ResultSetCheck
-
- set wno [lindex $profile($target) 12]
- set w .setup-${wno}
+ global targetS
+
+ set bno 0
+ while {[winfo exists .setup-$bno]} {
+ incr bno
+ }
+ set w .setup-$bno
toplevelG $w
frame $w.top.host
frame $w.top.port
frame $w.top.idAuthentication
- 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
# Maximum/preferred/idAuth ...
pack $w.top.description $w.top.host $w.top.port \
- $w.top.idAuthentication $w.top.maximumRecordSize \
- $w.top.preferredMessageSize -side top -anchor e -pady 2
+ $w.top.idAuthentication -side top -anchor e -pady 2
- entry-fields $w.top {description host port idAuthentication \
- maximumRecordSize preferredMessageSize} \
- {{Description:} {Host:} {Port:} {Id Authentication:} \
- {Maximum Record Size:} {Preferred Message Size:}} \
- [list protocol-setup-action $target] [list destroy $w]
+ entry-fields $w.top {description host port idAuthentication } \
+ {{Description:} {Host:} {Port:} {Id Authentication:}} \
+ [list protocol-setup-action $target $w] [list destroy $w]
- foreach sub {description host port idAuthentication \
- maximumRecordSize preferredMessageSize} {
+ foreach sub {description host port idAuthentication} {
dputs $sub
- bind $w.top.$sub.entry <Control-a> [list add-database $target]
- bind $w.top.$sub.entry <Control-d> [list delete-database $target]
+ bind $w.top.$sub.entry <Control-a> [list add-database $target $w]
+ bind $w.top.$sub.entry <Control-d> [list delete-database $target $w]
}
$w.top.description.entry insert 0 [lindex $profile($target) 0]
$w.top.host.entry insert 0 [lindex $profile($target) 1]
$w.top.port.entry insert 0 [lindex $profile($target) 2]
$w.top.idAuthentication.entry insert 0 [lindex $profile($target) 3]
- $w.top.maximumRecordSize.entry insert 0 [lindex $profile($target) 4]
- $w.top.preferredMessageSize.entry insert 0 [lindex $profile($target) 5]
- set csRadioType [lindex $profile($target) 6]
- 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 Z39
- }
-
+ set targetS($target,csType) [lindex $profile($target) 6]
+ set targetS($target,RPN) [lindex $profile($target) 8]
+ set targetS($target,CCL) [lindex $profile($target) 9]
+ set targetS($target,ResultSets) [lindex $profile($target) 10]
+ set targetS($target,protocolType) [lindex $profile($target) 11]
+ if {$targetS($target,protocolType) == ""} {
+ set targetS($target,protocolType) Z39
+ }
+ set targetS($target,LSLB) [lindex $profile($target) 13]
+ set targetS($target,SSUB) [lindex $profile($target) 14]
+ set targetS($target,MSPN) [lindex $profile($target) 15]
+ set targetS($target,presentChunk) [lindex $profile($target) 16]
+ set targetS($target,MRS) [lindex $profile($target) 4]
+ set targetS($target,PMS) [lindex $profile($target) 5]
# Databases ....
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]
+ button $w.top.databases.add -text Add \
+ -command [list add-database $target $w]
+ button $w.top.databases.delete -text Delete \
+ -command [list delete-database $target $w]
if {! [tk4]} {
listbox $w.top.databases.list -geometry 14x6 \
-yscrollcommand "$w.top.databases.scroll set"
label $w.top.cs-type.label -text "Transport"
radiobutton $w.top.cs-type.tcpip -text "TCP/IP" -anchor w \
- -variable csRadioType -value tcpip
+ -variable targetS($target,csType) -value tcpip
radiobutton $w.top.cs-type.mosi -text "MOSI" -anchor w\
- -variable csRadioType -value mosi
+ -variable targetS($target,csType) -value mosi
pack $w.top.cs-type.label $w.top.cs-type.tcpip $w.top.cs-type.mosi \
-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 Z39
+ -variable targetS($target,protocolType) -value Z39
radiobutton $w.top.protocol.sr -text "SR" -anchor w \
- -variable protocolRadioType -value SR
+ -variable targetS($target,protocolType) -value SR
pack $w.top.protocol.label $w.top.protocol.z39v2 $w.top.protocol.sr \
-padx 2 -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
- checkbutton $w.top.query.c2 -text "CCL query" -anchor w -variable CCLCheck
- checkbutton $w.top.query.c3 -text "Result sets" -anchor w -variable ResultSetCheck
+ checkbutton $w.top.query.c1 -text "RPN query" -anchor w \
+ -variable targetS($target,RPN)
+ checkbutton $w.top.query.c2 -text "CCL query" -anchor w \
+ -variable targetS($target,CCL)
+ checkbutton $w.top.query.c3 -text "Result sets" -anchor w \
+ -variable targetS($target,ResultSets)
pack $w.top.query.label -side top
pack $w.top.query.c1 $w.top.query.c2 $w.top.query.c3 \
-padx 2 -side top -fill x
# Ok-cancel
- bottom-buttons $w [list {Ok} [list protocol-setup-action $target] \
- {Delete} [list protocol-setup-delete $target] \
+ bottom-buttons $w [list {Ok} [list protocol-setup-action $target $w] \
+ {Delete} [list protocol-setup-delete $target $w] \
+ {Advanced} [list advanced-setup $target $bno] \
+ {Cancel} [list destroy $w]] 0
+}
+
+
+proc advanced-setup {target b} {
+ global profile
+ global targetS
+
+ set w .advanced-setup-$b
+
+ toplevelG $w
+
+ wm title $w "Advanced setup $target"
+
+ top-down-window $w
+
+ if {$target == ""} {
+ set target Default
+ }
+ dputs target
+
+ frame $w.top.largeSetLowerBound
+ frame $w.top.smallSetUpperBound
+ frame $w.top.mediumSetPresentNumber
+ frame $w.top.presentChunk
+ frame $w.top.maximumRecordSize
+ frame $w.top.preferredMessageSize
+
+ pack $w.top.largeSetLowerBound $w.top.smallSetUpperBound \
+ $w.top.mediumSetPresentNumber $w.top.presentChunk \
+ $w.top.maximumRecordSize $w.top.preferredMessageSize \
+ -side top -anchor e -pady 2
+
+ entry-fields $w.top {largeSetLowerBound smallSetUpperBound \
+ mediumSetPresentNumber presentChunk maximumRecordSize \
+ preferredMessageSize} \
+ {{Large Set Lower Bound:} {Small Set Upper Bound:} \
+ {Medium Set Present Number:} {Present Chunk:} \
+ {Maximum Record Size:} {Preferred Message Size:}} \
+ [list advanced-setup-action $target $b] [list destroy $w]
+
+ $w.top.largeSetLowerBound.entry insert 0 $targetS($target,LSLB)
+ $w.top.smallSetUpperBound.entry insert 0 $targetS($target,SSUB)
+ $w.top.mediumSetPresentNumber.entry insert 0 $targetS($target,MSPN)
+ $w.top.presentChunk.entry insert 0 $targetS($target,presentChunk)
+ $w.top.maximumRecordSize.entry insert 0 $targetS($target,MRS)
+ $w.top.preferredMessageSize.entry insert 0 $targetS($target,PMS)
+
+ bottom-buttons $w [list {Ok} [list advanced-setup-action $target $b] \
{Cancel} [list destroy $w]] 0
}
+proc advanced-setup-action {target b} {
+ set w .advanced-setup-$b
+ global targetS
+
+ set targetS($target,LSLB) [$w.top.largeSetLowerBound.entry get]
+ set targetS($target,SSUB) [$w.top.smallSetUpperBound.entry get]
+ set targetS($target,MSPN) [$w.top.mediumSetPresentNumber.entry get]
+ set targetS($target,presentChunk) [$w.top.presentChunk.entry get]
+ set targetS($target,MRS) [$w.top.maximumRecordSize.entry get]
+ set targetS($target,PMS) [$w.top.preferredMessageSize.entry get]
+
+ dputs "advanced-setup-action"
+ destroy $w
+}
+
proc database-select-action {} {
set w .database-select.top
set b {}
}
.top.target.m.slist delete 0 last
foreach n [lsort [array names profile]] {
- if {$n != "Default"} {
- .top.target.m.slist add command -label $n \
- -command [list protocol-setup $n]
- }
+ .top.target.m.slist add command -label $n \
+ -command [list protocol-setup $n]
}
}
global displayFormat
global popupMarcdf
global recordSyntax
-
+ global elementSetNames
+ global hostid
+
set windowGeometry(.) [wm geometry .]
if {[catch {set f [open ~/.clientrc.tcl w]}]} {
return
}
+ if {$hostid != "Default"} {
+ puts $f "set hostid $hostid"
+ set b [z39 databaseNames]
+ puts $f "set hostbase $b"
+ }
puts $f "set hotTargets \{ $hotTargets \}"
puts $f "set textWrap $textWrap"
puts $f "set displayFormat $displayFormat"
puts $f "set popupMarcdf $popupMarcdf"
puts $f "set recordSyntax $recordSyntax"
+ puts $f "set elementSetNames $elementSetNames"
foreach n [array names windowGeometry] {
puts -nonewline $f "set \{windowGeometry($n)\} \{"
puts -nonewline $f $windowGeometry($n)
set completenessTmpValue 0
set useTmpValue 0
+ catch {destroy $w}
+ toplevelG $w
+
+ set n [lindex $attr 0]
+ wm title $w "Index setup $n"
+
+ top-down-window $w
+
set len [llength $attr]
for {set i 1} {$i < $len} {incr i} {
set q [lindex $attr $i]
}
}
}
- if {[winfo exists $w]} {
- destroy $w
- }
- toplevelG $w
-
- set n [lindex $attr 0]
- wm title $w "Index setup $n"
-
- top-down-window $w
frame $w.top.use -relief ridge -border 2
frame $w.top.relation -relief ridge -border 2
listbox $w.top.index.list -yscrollcommand [list $w.top.index.scroll set]
scrollbar $w.top.index.scroll -orient vertical -border 1 \
-command [list $w.top.index.list yview]
- bind $w.top.index.list <2> [list query-edit-index $queryNo]
+ bind $w.top.index.list <Double-1> [list query-edit-index $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
foreach x $queryInfoTmp {
$w.top.index.list insert end [lindex $x 0]
}
+
# Bottom
bottom-buttons $w [list \
- {Ok} [list query-setup-action $queryNo] \
- {Add index} [list query-add-index $queryNo] \
- {Edit index} [list query-edit-index $queryNo] \
- {Delete index} [list query-delete-index $queryNo] \
- {Cancel} [list destroy $w]] 0
+ Ok [list query-setup-action $queryNo] \
+ Add [list query-add-index $queryNo] \
+ Edit [list query-edit-index $queryNo] \
+ Delete [list query-delete-index $queryNo] \
+ Cancel [list destroy $w]] 0
}
proc index-clear {} {
if {$term != ""} {
set attr [lrange [lindex $queryInfoFind [lindex $b 1]] 1 end]
+ set relation ""
+ set len [string length $term]
+ incr len -1
+
+ if {$len > 1} {
+ if {[string index $term 0] == ">"} {
+ if {[string index $term 1] == "=" } {
+ set term [string trim [string range $term 2 $len]]
+ set relation 4
+ } else {
+ set term [string trim [string range $term 1 $len]]
+ set relation 5
+ }
+ } elseif {[string index $term 0] == "<"} {
+ if {[string index $term 1] == "=" } {
+ set term [string trim [string range $term 2 $len]]
+ set relation 2
+ } elseif {[string index $term 1] == ">"} {
+ set term [string trim [string range $term 2 $len]]
+ set relation 6
+ } else {
+ set term [string trim [string range $term 1 $len]]
+ set relation 1
+ }
+ }
+ }
set len [string length $term]
incr len -1
set left 0
} elseif {$left} {
set term "@attr 5=2 ${term}"
}
+ if {$relation != ""} {
+ set term "@attr 2=${relation} ${term}"
+ }
foreach a $attr {
set term "@attr $a ${term}"
}
.top.options.m add cascade -label "Format" -menu .top.options.m.formats
.top.options.m add cascade -label "Wrap" -menu .top.options.m.wrap
.top.options.m add cascade -label "Syntax" -menu .top.options.m.syntax
+.top.options.m add cascade -label "Elements" -menu .top.options.m.elements
menu .top.options.m.query
.top.options.m.query add cascade -label "Select" \
.top.options.m.syntax add radiobutton -label "GRS1" \
-value GRS1 -variable recordSyntax
+menu .top.options.m.elements
+.top.options.m.elements add radiobutton -label "Unspecified" \
+ -value None -variable elementSetNames
+.top.options.m.elements add radiobutton -label "Full" \
+ -value F -variable elementSetNames
+.top.options.m.elements add radiobutton -label "Brief" \
+ -value B -variable elementSetNames
+
menubutton .top.help -text "Help" -menu .top.help.m
menu .top.help.m
.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-Bold-R-Normal-*-140-* \
+ -foreground brown -relief raised -borderwidth 1
+.data.record tag configure marc-small-head -foreground brown
+.data.record tag configure marc-pref \
+ -font -Adobe-Times-Medium-R-Normal-*-140-* \
+ -foreground blue
+.data.record tag configure marc-text \
+ -font -Adobe-Times-Medium-R-Normal-*-140-* \
+ -foreground black
+.data.record tag configure marc-it \
+ -font -Adobe-Times-Medium-I-Normal-*-140-* \
+ -foreground black
button .bot.logo -bitmap @${libdir}/bitmaps/book1 -command cancel-operation
if {[tk4]} {
if {[catch {ir z39}]} {
set e [info sharedlibextension]
- if {$e == {}} {
- set e .dll
- }
puts -nonewline "Loading irtcl$e ..."
load irtcl$e irtcl
ir z39
puts "ok"
}
-#z39 logLevel all
+z39 logLevel all
+
+if {$hostid != "Default"} {
+ catch {open-target $hostid $hostbase}
+}
+
show-logo 1