X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=client.tcl;h=dbdc64418c46b8275de9b31b3f80deefddbca779;hb=f490e9fbefdbf6ba1531eb3fba33467e55ac446c;hp=7b528c9dc1a8dbac85f9f344119c9e1837da05b6;hpb=c52211bb982f629d7902a3d85cbd098d93c9a003;p=ir-tcl-moved-to-github.git diff --git a/client.tcl b/client.tcl index 7b528c9..dbdc644 100644 --- a/client.tcl +++ b/client.tcl @@ -4,7 +4,34 @@ # Sebastian Hammer, Adam Dickmeiss # # $Log: client.tcl,v $ -# Revision 1.70 1995-10-12 14:46:52 adam +# 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. # @@ -313,6 +340,7 @@ set displayFormat 1 set popupMarcdf 0 set textWrap word set recordSyntax None +set elementSetNames None set delayRequest {} set queryTypes {Simple} @@ -369,6 +397,7 @@ proc set-wrap {m} { } proc dputs {m} { + puts $m } proc set-display-format {f} { @@ -774,6 +803,16 @@ proc popup-marc {sno no b df} { -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 + pack $w.top.s -side right -fill y pack $w.top.record -expand yes -fill both @@ -1045,6 +1084,7 @@ proc init-response {} { global cancelFlag global scanEnable + dputs {init-reponse} if {$cancelFlag} { close-target return @@ -1073,9 +1113,13 @@ proc search-request {bflag} { global cancelFlag global delayRequest global recordSyntax + global elementSetNames set target $hostid + if {[z39 connect] == ""} { + return + } dputs "search-request" show-message {} if {!$bflag && $busy} { @@ -1118,6 +1162,11 @@ proc search-request {bflag} { } else { z39.$setNo preferredRecordSyntax $recordSyntax } + if {$elementSetNames == "None" } { + z39.$setNo elementSetNames {} + } else { + z39.$setNo elementSetNames $elementSetNames + } z39 callback {search-response} z39.$setNo search $query show-status Searching 1 0 @@ -1437,6 +1486,10 @@ proc search-response {} { if {$setMax > 20} { set setMax 20 } + set no [z39.$setNo numberOfRecordsReturned] + dputs "Returned $no records, setOffset $setOffset" + add-title-lines $setNo $no $setOffset + set setOffset [expr $setOffset + $no] z39 callback {present-response} z39.$setNo present $setOffset 1 show-status Retrieving 1 0 @@ -1647,15 +1700,13 @@ proc define-target-dialog {} { 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 @@ -1664,7 +1715,7 @@ definition $target ?"] } } -proc protocol-setup-action {target} { +proc protocol-setup-action {target w} { global profile global csRadioType global protocolRadioType @@ -1673,15 +1724,14 @@ proc protocol-setup-action {target} { global CCLCheck global ResultSetCheck - set wno [lindex $profile($target) 12] - set w .setup-${wno} - set b {} 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] } + 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] \ @@ -1713,26 +1763,22 @@ proc place-force {window parent} { 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 @@ -1742,17 +1788,15 @@ proc add-database {target} { 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] @@ -1774,9 +1818,12 @@ proc protocol-setup {target} { global RPNCheck global CCLCheck global ResultSetCheck - - set wno [lindex $profile($target) 12] - set w .setup-${wno} + + set b 0 + while {[winfo exists .setup-$b]} { + incr b + } + set w .setup-$b toplevelG $w @@ -1810,13 +1857,13 @@ proc protocol-setup {target} { maximumRecordSize preferredMessageSize} \ {{Description:} {Host:} {Port:} {Id Authentication:} \ {Maximum Record Size:} {Preferred Message Size:}} \ - [list protocol-setup-action $target] [list destroy $w] + [list protocol-setup-action $target $w] [list destroy $w] foreach sub {description host port idAuthentication \ maximumRecordSize preferredMessageSize} { dputs $sub - bind $w.top.$sub.entry [list add-database $target] - bind $w.top.$sub.entry [list delete-database $target] + bind $w.top.$sub.entry [list add-database $target $w] + bind $w.top.$sub.entry [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] @@ -1837,10 +1884,10 @@ proc protocol-setup {target} { 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" @@ -1900,8 +1947,8 @@ proc protocol-setup {target} { -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] \ {Cancel} [list destroy $w]] 0 } @@ -2093,7 +2140,8 @@ proc save-geometry {} { global displayFormat global popupMarcdf global recordSyntax - + global elementSetNames + set windowGeometry(.) [wm geometry .] if {[catch {set f [open ~/.clientrc.tcl w]}]} { @@ -2104,6 +2152,7 @@ proc save-geometry {} { 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) @@ -2573,6 +2622,14 @@ proc index-setup {attr queryNo indexNo} { 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] @@ -2596,15 +2653,6 @@ proc index-setup {attr queryNo indexNo} { } } } - 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 @@ -2753,7 +2801,7 @@ proc query-setup {queryNo} { 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 [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 @@ -2769,13 +2817,14 @@ proc query-setup {queryNo} { 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 {} { @@ -2800,6 +2849,32 @@ proc index-query {} { 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 @@ -2820,6 +2895,9 @@ proc index-query {} { } elseif {$left} { set term "@attr 5=2 ${term}" } + if {$relation != ""} { + set term "@attr 2=${relation} ${term}" + } foreach a $attr { set term "@attr $a ${term}" } @@ -3002,6 +3080,7 @@ menu .top.options.m .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" \ @@ -3059,6 +3138,14 @@ menu .top.options.m.syntax .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 @@ -3102,8 +3189,18 @@ if {! $monoFlag} { } .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 + -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]} { @@ -3133,6 +3230,8 @@ if {[catch {ir z39}]} { ir z39 puts "ok" } -#z39 logLevel all +z39 largeSetLowerBound 20 +z39 smallSetUpperBound 2 +z39 mediumSetPresentNumber 2 +z39 logLevel all show-logo 1 -