# Sebastian Hammer, Adam Dickmeiss
#
# $Log: client.tcl,v $
-# Revision 1.36 1995-06-13 07:42:14 adam
+# Revision 1.37 1995-06-13 14:37:59 adam
+# Work on query setup.
+# Better about origin/target.
+# Better presentation formats.
+#
+# Revision 1.36 1995/06/13 07:42:14 adam
# Bindings removed from text widgets.
#
# Revision 1.35 1995/06/12 15:17:31 adam
set queryTypes {Simple}
set queryButtons { { {I 0} {I 1} {I 2} } }
-set queryInfo { { {Title {1=4}} {Author {1=1}} \
+set queryInfo { { {Title {1=4 4=1}} {Author {1=1}} \
{Subject {1=21}} {Any {1=1016}} } }
wm minsize . 0 0
add-title-lines 0 10000 1
}
-proc readonlyText {w} {
+proc initBindings {} {
set w Text
bind $w <1> {}
bind $w <Double-1> {}
bind $w <Control-h> {}
bind $w <Control-d> {}
bind $w <Control-v> {}
+
+ set w Listbox
+ bind $w <B1-Motion> {}
+ bind $w <Shift-B1-Motion> {}
}
-proc destroyG {w} {
+proc destroyGW {w} {
global windowGeometry
set windowGeometry($w) [wm geometry $w]
- destroy $w
-}
-
+}
proc toplevelG {w} {
global windowGeometry
wm geometry $w $g
}
}
+ bind $w <Destroy> [list destroyGW $w]
}
if {[file readable "clientrc.tcl"]} {
pack $w.bot.$i -side left -expand yes -padx 5 -pady 5
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 3 -pady 3 -side left
+ pack $w.bot.$i.ok -expand yes -ipadx 3 -ipady 2 -padx 3 -pady 3 -side left
incr i 2
while {$i < $l} {
proc about-target {} {
set w .about-target-w
+ global hostid
- toplevelG $w
+ toplevel $w
wm title $w "About target"
top-down-window $w
+ frame $w.top.a -relief ridge -border 2
+ frame $w.top.p -relief ridge -border 2
+
+ pack $w.top.a $w.top.p -side top -fill x
+
+ label $w.top.a.about -text "About"
+ label $w.top.a.irtcl -text $hostid \
+ -font -Adobe-Helvetica-Bold-R-Normal-*-240-*
+ pack $w.top.a.about $w.top.a.irtcl -side top
+
set i [z39 targetImplementationName]
- label $w.top.in -text "Implementation name: $i"
+ label $w.top.p.in -text "Implementation name: $i"
set i [z39 targetImplementationId]
- label $w.top.ii -text "Implementation id: $i"
+ label $w.top.p.ii -text "Implementation id: $i"
set i [z39 targetImplementationVersion]
- label $w.top.iv -text "Implementation version: $i"
+ label $w.top.p.iv -text "Implementation version: $i"
set i [z39 options]
- label $w.top.op -text "Protocol options: $i"
+ label $w.top.p.op -text "Protocol options: $i"
- pack $w.top.in $w.top.ii $w.top.iv $w.top.op -side top -anchor nw
+ pack $w.top.p.in $w.top.p.ii $w.top.p.iv $w.top.p.op -side top -anchor nw
- bottom-buttons $w [list {Close} [list destroyG $w]] 1
+ bottom-buttons $w [list {Close} [list destroy $w]] 1
}
proc about-origin {} {
place-force $w .
top-down-window $w
+ frame $w.top.a -relief ridge -border 2
+ frame $w.top.p -relief ridge -border 2
+
+ pack $w.top.a $w.top.p -side top -fill x
+
+ label $w.top.a.about -text "About"
+ label $w.top.a.irtcl -text "IrTcl" \
+ -font -Adobe-Helvetica-Bold-R-Normal-*-240-*
+ pack $w.top.a.about $w.top.a.irtcl -side top
+
set i [z39 implementationName]
- label $w.top.in -text "Implementation name: $i"
+ label $w.top.p.in -text "Implementation name: $i"
set i [z39 implementationId]
- label $w.top.ii -text "Implementation id: $i"
+ label $w.top.p.ii -text "Implementation id: $i"
- pack $w.top.in $w.top.ii -side top -anchor nw
+ pack $w.top.p.in $w.top.p.ii -side top -anchor nw
- bottom-buttons $w [list {Close} [list destroyG $w]] 1
+ bottom-buttons $w [list {Close} [list destroy $w]] 1
}
proc popup-marc {sno no b df} {
set new 1
}
$w.top.record delete 0.0 end
+ wm title $w "Record #$no"
set ffunc [lindex $displayFormats $df]
set ffunc "display-$ffunc"
-padx 3 -pady 3 -side left
} else {
bottom-buttons $w [list \
- {Close} [list destroyG $w] \
+ {Close} [list destroy $w] \
{Duplicate} [list popup-marc $sno $no 1 $df]] 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 entryconfigure $i \
- -command [list display-f $sno $no $w.top.record 0]
+ -command [list display-$f $sno $no $w.top.record 0]
incr i
}
}
show-status {Search} 1 0
}
-proc scan-request {attr} {
+proc scan-request {} {
set w .scan-window
global profile
global hostid
global scanView
global scanTerm
+ global curIndexEntry
+ global queryButtonsFind
+ global queryInfoFind
set target $hostid
set scanView 0
set scanTerm {}
+ set b [lindex $queryButtonsFind $curIndexEntry]
+ set attr {}
+ foreach a [lrange [lindex $queryInfoFind [lindex $b 1]] 1 end] {
+ set attr "@attr $a $attr"
+ }
ir-scan z39.scan z39
if {![winfo exists $w]} {
pack $w.top.list -side left -fill both -expand yes
}
- bottom-buttons $w [list {Close} [list destroyG $w] \
+ bottom-buttons $w [list {Close} [list destroy $w] \
{Up} [list scan-up $attr] \
{Down} [list scan-down $attr]] 0
bind $w.top.list <Up> [list scan-up $attr]
if {$type == ""} {
break
}
+ .data.record tag bind r$o <Any-Enter> {}
+ .data.record tag bind r$o <Any-Leave> {}
set insert0 [.data.record index insert]
$ffunc $setno $o .data.record 1
.data.record tag add r$o $insert0 insert
cascade-target-list
puts $profile($target)
- destroyG $w
+ destroy $w
}
proc place-force {window parent} {
maximumRecordSize preferredMessageSize} \
{{Description:} {Host:} {Port:} {Id Authentication:} \
{Maximum Record Size:} {Preferred Message Size:}} \
- [list protocol-setup-action $target] [list destroyG $w]
+ [list protocol-setup-action $target] [list destroy $w]
foreach sub {description host port idAuthentication \
maximumRecordSize preferredMessageSize} {
# Ok-cancel
bottom-buttons $w [list {Ok} [list protocol-setup-action $target] \
- {Cancel} [list destroyG $w]] 0
+ {Cancel} [list destroy $w]] 0
}
proc database-select-action {} {
}
}
+proc query-select {i} {
+ global queryButtonsFind
+ global queryInfoFind
+ global queryButtons
+ global queryInfo
+
+ set queryInfoFind [lindex $queryInfo $i]
+ set queryButtonsFind [lindex $queryButtons $i]
+
+ index-lines .lines 1 $queryButtonsFind $queryInfoFind activate-index
+}
+
+proc query-new-action {} {
+ global queryTypes
+ global queryButtons
+ global queryInfo
+ global settingsChanged
+
+ set settingsChanged 1
+ lappend queryTypes [.query-new.top.index.entry get]
+ lappend queryButtons {}
+ lappend queryInfo {}
+
+ destroy .query-new
+ cascade-query-list
+}
+
+proc query-new {} {
+ set w .query-new
+
+ toplevel $w
+ place-force $w .
+ top-down-window $w
+ frame $w.top.index
+ pack $w.top.index \
+ -side top -anchor e -pady 2
+ entry-fields $w.top {index} \
+ {{Query Name:}} \
+ query-new-action {destroy .query-new}
+ top-down-ok-cancel $w query-new-action 1
+}
+
proc cascade-query-list {} {
global queryTypes
+ set w .top.options.m.query
set i 0
- .top.options.m.slist delete 0 last
+ $w.slist delete 0 last
foreach n $queryTypes {
- .top.options.m.slist add command -label $n \
- -command [list query-setup $i]
+ $w.slist add command -label $n -command [list query-setup $i]
incr i
}
set i 0
- .top.options.m.clist delete 0 last
+ $w.clist delete 0 last
foreach n $queryTypes {
- .top.options.m.clist add command -label $n \
- -command [list query-select $i]
+ $w.clist add command -label $n -command [list query-select $i]
incr i
}
}
proc exit-action {} {
global settingsChanged
- save-geometry
if {$settingsChanged} {
set a [alert "you havent saved your settings. Do you wish to save?"]
if {$a} {
save-settings
}
}
+ save-geometry
exit 0
}
proc listbuttonv-action {button var names i} {
global $var
- set $var $i
+ set $var [lindex $names [expr $i+1]]
$button configure -text [lindex $names $i]
}
break
}
}
- menubutton $button -text $n -width 10 -menu ${button}.m \
+ if {[winfo exists $button]} {
+ $button configure -text $n
+ return
+ }
+ menubutton $button -text $n -menu ${button}.m \
-relief raised -border 1
menu ${button}.m
for {set i 0} {$i < $l} {incr i 2} {
}
proc query-add-index-action {queryNo} {
- set w .setup-query-$queryNo
+ set w .setup-query
global queryInfoTmp
global queryButtonsTmp
}
proc query-add-line {queryNo} {
- set w .setup-query-$queryNo
+ set w .setup-query
global queryInfoTmp
global queryButtonsTmp
}
proc query-del-line {queryNo} {
- set w .setup-query-$queryNo
+ set w .setup-query
global queryInfoTmp
global queryButtonsTmp
set w .query-add-index
toplevel $w
- place-force $w .setup-query-$queryNo
+ place-force $w .setup-query
top-down-window $w
frame $w.top.index
pack $w.top.index \
global queryInfo
global queryButtonsTmp
global queryInfoTmp
- global queryButtonsFind
- global queryInfoFind
+ global settingsChanged
+
+ set settingsChanged 1
set queryInfo [lreplace $queryInfo $queryNo $queryNo \
$queryInfoTmp]
set queryButtons [lreplace $queryButtons $queryNo $queryNo \
$queryButtonsTmp]
- set queryInfoFind $queryInfoTmp
- set queryButtonsFind $queryButtonsTmp
-
- puts $queryInfo
- puts $queryButtons
- destroy .setup-query-$queryNo
-
- index-lines .lines 1 $queryButtonsFind $queryInfoFind activate-index
+ destroy .setup-query
}
proc activate-e-index {value no i} {
global queryButtonsTmp
+ global queryIndexTmp
- puts $queryButtonsTmp
set queryButtonsTmp [lreplace $queryButtonsTmp $no $no [list I $i]]
puts $queryButtonsTmp
- puts "value $value"
- puts "no $no"
- puts "i $i"
+ set queryIndexTmp $i
}
proc activate-index {value no i} {
set queryButtonsFind [lreplace $queryButtonsFind $no $no [list I $i]]
puts "queryButtonsFind $queryButtonsFind"
- puts "value $value"
- puts "no $no"
- puts "i $i"
}
-proc query-setup {queryNo} {
- set w .setup-query-$queryNo
- global queryTypes
- set queryTypes {Simple}
- global queryButtons
- global queryInfo
- global queryButtonsTmp
- global queryInfoTmp
-
+proc update-attr {} {
+ set w .index-setup
+ listbuttonv $w.top.relation.b relationTmpValue\
+ {{None} 0 {Less than} 1 {Greater than or equal} 2 {Equal} 3 \
+ {Greater than or equal} 4 {Greater than} 5 {Not equal} 6 \
+ {Phonetic} 100 {Stem} 101 {Relevance} 102 {AlwaysMatches} 103}
+ listbuttonv $w.top.position.b positionTmpValue {{None} 0 \
+ {First in field} 1 {First in subfield} 2 {Any position in field} 3}
+ listbuttonv $w.top.structure.b structureTmpValue {{None} 0 {Phrase} 1 \
+ {Word} 2 {Key} 3 {Year} 4 {Date (norm)} 5 {Word list} 6 \
+ {Date (un-norm)} 100 {Name (norm)} 101 {Date (un-norm)} 102 \
+ {Structure} 103 {urx} 104 {free-form} 105 {doc-text} 106 \
+ {local-number} 107 {string} 108 {numeric string} 109}
+ listbuttonv $w.top.truncation.b truncationTmpValue {{Auto} 0 {Right} 1 \
+ {Left} 2 {Left and right} 3 {No truncation} 100 \
+ {Process #} 101 {Re-1} 102 {Re-2} 103}
+ listbuttonv $w.top.completeness.b completenessTmpValue {{None} 0 \
+ {Incomplete subfield} 1 {Complete subfield} 2 {Complete field} 3}
+}
+
+proc use-attr {init} {
+ set attr {
+ {None} 0
+ {Personal name} 1
+ {Corporate name} 2
+ {Conference name} 3
+ {Title} 4
+ {Title-series} 5
+ {Title-uniform} 6
+ {ISBN} 7
+ {ISSN} 8
+ {LC card number} 9
+ {BNB card number} 10
+ {BGF(sic) number} 11
+ {Local number} 12
+ {Dewey classification} 13
+ {UDC classification} 14
+ {Bliss classification} 15
+ {LC call number} 16
+ {NLM call number} 17
+ {NAL call number} 18
+ {MOS call number} 19
+ {Local classification} 20
+ {Subject heading} 21
+ {Subject-RAMEAU} 22
+ {BDI-index-subject} 23
+ {INSPEC-subject} 24
+ {MESH-subject} 25
+ {PA-subject} 26
+ {LC-subject-heading} 27
+ {RVM-subject-heading} 28
+ {Local subject index} 29
+ {Date} 30
+ {Date of publication} 31
+ {Date of acquisition} 32
+ {Title-key} 33
+ {Title-collective} 34
+ {Title-parallel} 35
+ {Title-cover} 36
+ {Title-added-title-page} 37
+ {Title-caption} 38
+ {Title-running} 39
+ {Title-spine} 40
+ {Title-other-variant} 41
+ {Title-former} 42
+ {Title-abbreviated} 43
+ {Title-expanded} 44
+ {Subject-PRECIS} 45
+ {Subject-RSWK} 46
+ {Subject-subdivision} 47
+ {Number-natl-bibliography} 48
+ {Number-legal-deposit} 49
+ {Number-govt-publication} 50
+ {Number-publisher-for-music} 51
+ {Number-DB} 52
+ {Number-local-call} 53
+ {Code-language} 54
+ {Code-geographic-area} 55
+ {Code-institution} 56
+ {Name and title} 57
+ {Name-geographic} 58
+ {Place-publication} 59
+ {CODEN} 60
+ {Microform-generation} 61
+ {Abstract} 62
+ {Note} 63
+ {Author-title} 1000
+ {Record type} 1001
+ {Name} 1002
+ {Author} 1003
+ {Author-name-personal} 1004
+ {Author-name-corporate} 1005
+ {Author-name-conference} 1006
+ {Identifier-standard} 1007
+ {Subject-LC-children's} 1008
+ {Subject-name-personal} 1009
+ {Body of text} 1010
+ {Date/time added to database} 1011
+ {Date/time last modified} 1012
+ {Authority/format identifier} 1013
+ {Concept-text} 1014
+ {Concept-reference} 1015
+ {Any} 1016
+ {Server choice} 1017
+ {Publisher} 1018
+ {Record source} 1019
+ {Editor} 1020
+ {Bib-level} 1021
+ {Geographic class} 1022
+ {Indexed by} 1023
+ {Map scale} 1024
+ {Music key} 1025
+ {Related periodical} 1026
+ {Report number} 1027
+ {Stock number} 1028
+ {Thematic number} 1030
+ {Material type} 1031
+ {Doc ID} 1032
+ {Host item} 1033
+ {Content type} 1034
+ {Anywhere} 1035
+ }
+ set w .index-setup
+ global useTmpValue
+ set l [llength $attr]
+
+ if {$init} {
+ set s 0
+ set lno 0
+ for {set i 0} {$i < $l} {incr i} {
+ $w.top.use.list insert end [lindex $attr $i]
+ incr i
+ if {$useTmpValue == [lindex $attr $i]} {
+ set s $lno
+ }
+ incr lno
+ }
+ $w.top.use.list select from $s
+ $w.top.use.list select to $s
+ incr s -3
+ if {$s < 0} {
+ set s 0
+ }
+ $w.top.use.list yview $s
+ } else {
+ set lno [lindex [$w.top.use.list curselection] 0]
+ set i [expr $lno+$lno+1]
+ set useTmpValue [lindex $attr $i]
+ }
+}
+
+proc index-setup-action {oldAttr queryNo indexNo} {
+ set attr [lindex $oldAttr 0]
+
+ global useTmpValue
global relationTmpValue
global structureTmpValue
global truncationTmpValue
global completenessTmpValue
global positionTmpValue
+ global queryInfoTmp
- set queryName [lindex $queryTypes $queryNo]
- set queryInfoTmp [lindex $queryInfo $queryNo]
- set queryButtonsTmp [lindex $queryButtons $queryNo]
+ use-attr 0
- toplevel $w
+ if {$useTmpValue > 0} {
+ lappend attr "1=$useTmpValue"
+ }
+ if {$relationTmpValue > 0} {
+ lappend attr "2=$relationTmpValue"
+ }
+ if {$positionTmpValue > 0} {
+ lappend attr "3=$positionTmpValue"
+ }
+ if {$structureTmpValue > 0} {
+ lappend attr "4=$structureTmpValue"
+ }
+ if {$truncationTmpValue > 0} {
+ lappend attr "5=$truncationTmpValue"
+ }
+ if {$completenessTmpValue > 0} {
+ lappend attr "6=$completenessTmpValue"
+ }
+ set queryInfoTmp [lreplace $queryInfoTmp $indexNo $indexNo $attr]
+ destroy .index-setup
+}
- wm title $w "Query setup $queryName"
- place-force $w .
+proc index-setup {attr queryNo indexNo} {
+ set w .index-setup
+
+ global relationTmpValue
+ global structureTmpValue
+ global truncationTmpValue
+ global completenessTmpValue
+ global positionTmpValue
+ global useTmpValue
+ set relationTmpValue 0
+ set truncationTmpValue 0
+ set structureTmpValue 0
+ set positionTmpValue 0
+ set completenessTmpValue 0
+ set useTmpValue 0
+
+ set len [llength $attr]
+ for {set i 1} {$i < $len} {incr i} {
+ set q [lindex $attr $i]
+ set l [string first = $q]
+ if {$l > 0} {
+ set t [string range $q 0 [expr $l - 1]]
+ set v [string range $q [expr $l + 1] end]
+ switch $t {
+ 1
+ { set useTmpValue $v }
+ 2
+ { set relationTmpValue $v }
+ 3
+ { set positionTmpValue $v }
+ 4
+ { set structureTmpValue $v }
+ 5
+ { set truncationTmpValue $v }
+ 6
+ { set completenessTmpValue $v }
+ }
+ }
+ }
+ toplevelG $w
+
+ set n [lindex $attr 0]
+ wm title $w "Index setup $n"
top-down-window $w
- frame $w.top.lines -relief ridge -border 2
frame $w.top.use -relief ridge -border 2
frame $w.top.relation -relief ridge -border 2
frame $w.top.position -relief ridge -border 2
frame $w.top.truncation -relief ridge -border 2
frame $w.top.completeness -relief ridge -border 2
- # Index Lines
-
- index-lines $w.top.lines 0 $queryButtonsTmp $queryInfoTmp activate-e-index
-
- pack $w.top.lines -side left -pady 6 -padx 6 -fill y
+ update-attr
# Use Attributes
pack $w.top.use -side left -pady 6 -padx 6 -fill y
label $w.top.use.label -text "Use"
- listbox $w.top.use.list -geometry 20x10 \
+ listbox $w.top.use.list -geometry 26x10 \
-yscrollcommand "$w.top.use.scroll set"
scrollbar $w.top.use.scroll -orient vertical -border 1
pack $w.top.use.label -side top -fill x \
-padx 2 -pady 2
$w.top.use.scroll config -command "$w.top.use.list yview"
- foreach u {{Personal name} {Corporate name}} {
- $w.top.use.list insert end $u
- }
+ use-attr 1
# Relation Attributes
pack $w.top.relation -pady 6 -padx 6 -side top
label $w.top.relation.label -text "Relation" -width 18
- set relationTmpValue 0
- listbuttonv $w.top.relation.b relationTmpValue\
- {{None} 0 {Less than} 1 {Greater than or equal} 2 {Equal} 3 \
- {Greater than or equal} 4 {Greater than} 5 {Not equal} 6 \
- {Phonetic} 100 {Stem} 101 {Relevance} 102 {AlwaysMatches} 103}
-
pack $w.top.relation.label $w.top.relation.b -fill x
# Position Attributes
pack $w.top.position -pady 6 -padx 6 -side top
label $w.top.position.label -text "Position" -width 18
- set positionTmpValue 0
- listbuttonv $w.top.position.b positionTmpValue {{None} 0 \
- {First in field} 1 {First in subfield} 2 {Any position in field} 3}
-
pack $w.top.position.label $w.top.position.b -fill x
# Structure Attributes
pack $w.top.structure -pady 6 -padx 6 -side top
label $w.top.structure.label -text "Structure" -width 18
- set structureTmpValue 0
- listbuttonv $w.top.structure.b structureTmpValue {{None} 0 {Phrase} 1 \
- {Word} 2 {Key} 3 {Year} 4 {Date (norm)} 5 {Word list} 6 \
- {Date (un-norm)} 100 {Name (norm)} 101 {Date (un-norm)} 102 \
- {Structure} 103 {urx} 104 {free-form} 105 {doc-text} 106 \
- {local-number} 107 {string} 108 {numeric string} 109}
-
pack $w.top.structure.label $w.top.structure.b -fill x
# Truncation Attributes
pack $w.top.truncation -pady 6 -padx 6 -side top
label $w.top.truncation.label -text "Truncation" -width 18
- set truncationTmpValue 0
- listbuttonv $w.top.truncation.b truncationTmpValue {{Auto} 0 {Right} 1 \
- {Left} 2 {Left and right} 3 {No truncation} 100 \
- {Process #} 101 {Re-1} 102 {Re-2} 103}
pack $w.top.truncation.label $w.top.truncation.b -fill x
# Completeness Attributes
pack $w.top.completeness -pady 6 -padx 6 -side top
label $w.top.completeness.label -text "Completeness" -width 18
- set completenessTmpValue 0
- listbuttonv $w.top.completeness.b completenessTmpValue {{None} 0 \
- {Incomplete subfield} 1 {Complete subfield} 2 {Complete field} 3}
pack $w.top.completeness.label $w.top.completeness.b -fill x
# Ok-cancel
bottom-buttons $w [list \
+ {Ok} [list index-setup-action $attr $queryNo $indexNo] \
+ {Cancel} [list destroy $w]] 0
+
+}
+
+proc query-edit-index {queryNo} {
+ global queryInfoTmp
+ global queryIndexTmp
+
+ set attr [lindex $queryInfoTmp $queryIndexTmp]
+ puts "Editing $attr"
+ index-setup $attr $queryNo $queryIndexTmp
+}
+
+proc query-setup {queryNo} {
+ set w .setup-query
+
+ global queryTypes
+ global queryButtons
+ global queryInfo
+ global queryButtonsTmp
+ global queryInfoTmp
+ global queryIndexTmp
+
+ set queryIndexTmp 0
+ set queryName [lindex $queryTypes $queryNo]
+ set queryInfoTmp [lindex $queryInfo $queryNo]
+ set queryButtonsTmp [lindex $queryButtons $queryNo]
+
+ toplevelG $w
+
+ wm minsize $w 0 0
+ wm title $w "Query setup $queryName"
+
+ top-down-window $w
+
+ frame $w.top.lines -relief ridge -border 2
+
+ # Index Lines
+
+ index-lines $w.top.lines 0 $queryButtonsTmp $queryInfoTmp activate-e-index
+
+ pack $w.top.lines -side left -pady 6 -padx 6 -fill y
+
+ # Ok-cancel
+ bottom-buttons $w [list \
{Ok} [list query-setup-action $queryNo] \
{Add index} [list query-add-index $queryNo] \
+ {Edit index} [list query-edit-index $queryNo] \
{Add line} [list query-add-line $queryNo] \
{Delete line} [list query-del-line $queryNo] \
{Cancel} [list destroy $w]] 0
foreach b $queryButtonsFind {
set term [string trim [.lines.$i.e get]]
if {$term != ""} {
- set attr [lindex [lindex $queryInfoFind [lindex $b 1]] 1]
+ set attr [lrange [lindex $queryInfoFind [lindex $b 1]] 1 end]
set term "\{${term}\}"
foreach a $attr {
return $qs
}
+proc index-focus-in {w i} {
+ global curIndexEntry
+
+ $w.$i configure -background red
+ set curIndexEntry $i
+}
+
proc index-lines {w realOp buttonInfo queryInfo handle} {
set i 0
foreach b $buttonInfo {
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 <FocusIn> [list index-focus-in $w $i]
bind $w.$i.e <FocusOut> [list $w.$i configure \
-background white]
pack $w.$i.l -side left
menubutton .top.options -text "Options" -underline 0 -menu .top.options.m
menu .top.options.m
-.top.options.m add cascade -label "Choose query" -menu .top.options.m.clist
-.top.options.m add command -label "Define query" -command {new-query-dialog}
-.top.options.m add cascade -label "Edit query" -menu .top.options.m.slist
+.top.options.m add cascade -label "Query" -menu .top.options.m.query
.top.options.m add cascade -label "Format" -menu .top.options.m.formats
-menu .top.options.m.slist
-menu .top.options.m.clist
-menu .top.options.m.formats
+menu .top.options.m.query
+.top.options.m.query add cascade -label "Choose query" \
+ -menu .top.options.m.query.clist
+.top.options.m.query add cascade -label "Edit query" \
+ -menu .top.options.m.query.slist
+.top.options.m.query add command -label "Define query" \
+ -command {query-new}
+
+menu .top.options.m.query.slist
+menu .top.options.m.query.clist
cascade-query-list
+
+menu .top.options.m.formats
set i 0
foreach f $displayFormats {
.top.options.m.formats add radiobutton -label $f \
button .mid.search -width 7 -text {Search} -command search-request \
-state disabled
button .mid.scan -width 7 -text {Scan} \
- -command [list scan-request "@attr 1=4 @attr 5=1 @attr 4=1"] -state disabled
+ -command scan-request -state disabled
button .mid.present -width 7 -text {Present} -command [list present-more 10] \
-state disabled
scrollbar .data.scroll -command [list .data.record yview]
pack .data.scroll -side right -fill y
pack .data.record -expand yes -fill both
-readonlyText .data.record
+initBindings
if {[tk colormodel .] == "color"} {
.data.record tag configure marc-tag -foreground blue
ir z39
-.top.options.m.formats invoke $displayFormat
+#.top.options.m.formats invoke $displayFormat
show-logo 1