X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=formats%2Fline.tcl;h=b3b5212d05a6ae5cd6085e4f261b2c9009265ecc;hb=HEAD;hp=a8f86b7d17a91c570c194907d034cb1146f10ae8;hpb=a7e17ee4caa661c7cd6c40604b6c2eafcc970068;p=ir-tcl-moved-to-github.git diff --git a/formats/line.tcl b/formats/line.tcl index a8f86b7..b3b5212 100644 --- a/formats/line.tcl +++ b/formats/line.tcl @@ -4,7 +4,23 @@ # Sebastian Hammer, Adam Dickmeiss # # $Log: line.tcl,v $ -# Revision 1.10 1995-10-17 17:39:46 adam +# Revision 1.15 1997-11-24 11:34:38 adam +# Using odr_nullval() instead of ODR_NULLVAL when appropriate. +# +# Revision 1.14 1997/11/19 11:22:10 adam +# Object identifiers can be accessed in GRS-1 records. +# +# Revision 1.13 1996/04/12 12:25:27 adam +# Modified display of GRS-1 records to include headings for standard +# tag sets. +# +# Revision 1.12 1996/03/29 16:05:36 adam +# Bug fix: GRS records wasn't recognized. +# +# Revision 1.11 1996/01/23 15:24:21 adam +# Wrore more comments. +# +# Revision 1.10 1995/10/17 17:39:46 adam # Minor bug fix in call to display-grs-line. # # Revision 1.9 1995/10/17 14:18:09 adam @@ -39,24 +55,52 @@ # # proc display-grs-line {w r i} { + global tagSet + + if {[tk4]} { + set start [$w index insert] + } + set head Untitled foreach e $r { - for {set j 0} {$j < $i} {incr j} { - insertWithTags $w " " {} - } - insertWithTags $w "([lindex $e 0]:[lindex $e 2])" marc-tag - if {[lindex $e 3] == "string"} { - insertWithTags $w [lindex $e 4] {} - insertWithTags $w "\n" {} - } elseif {[lindex $e 3] == "subtree"} { - insertWithTags $w "\n" {} - display-grs-line $w [lindex $e 4] [expr $i+1] - } else { - insertWithTags $w [lindex $e 4] {} - insertWithTags $w " ?\n" {} + if {![tk4]} { + for {set j 0} {$j < $i} {incr j} { + insertWithTags $w " " marc-tag + } } + set ttype [lindex $e 0] + set tval [lindex $e 2] + if {$ttype == 2 && $tval == 1} { + if {[lindex $e 3] == "subtree"} { + set f [lindex $e 4] + foreach e $f { + if {[lindex $e 0] == 1 && [lindex $e 2] == 19} { + break + } + } + } + if {[lindex $e 3] == "string"} { + set head [lindex $e 4] + } + break + } + } + insertWithTags $w $head marc-text + insertWithTags $w "\n" + if {[tk4]} { + $w tag configure indent$i \ + -lmargin1 [expr $i * 10] \ + -lmargin2 [expr $i * 10 + 5] + $w tag add indent$i $start insert } } +# Procedure display-line {sno no w hflag} +# sno result set number (integer) +# no record position (integer) +# w text widget in which the record should be displayed. +# hflag header flag. If true a header showing the record position +# should be displayed. +# This procedure attempts to display records in a line-per-line format. proc display-line {sno no w hflag} { global monoFlag set type [z39.$sno type $no] @@ -83,7 +127,7 @@ proc display-line {sno no w hflag} { set rtype [z39.$sno recordType $no] if {$rtype == "SUTRS"} { insertWithTags $w [join [z39.$sno getSutrs $no]] - } elseif {$rtype == "GRS1"} { + } elseif {$rtype == "GRS-1"} { display-grs-line $w [z39.$sno getGrs $no] 0 } else { if {[catch {