#
# $Log: client.tcl,v $
-# Revision 1.32 1995-06-07 09:16:37 adam
+# Revision 1.34 1995-06-12 07:59:07 adam
+# More work on geometry handling.
+#
+# Revision 1.33 1995/06/09 11:17:35 adam
+# Start work on geometry management.
+#
+# Revision 1.32 1995/06/07 09:16:37 adam
# New presentation format.
#
# Revision 1.31 1995/06/06 16:31:09 adam
set queryButtons { { {I 0} {I 1} {I 2} } }
set queryInfo { { {Title {1=4}} {Author {1=1}} \
{Subject {1=21}} {Any {1=1016}} } }
-
wm minsize . 0 0
+proc read-formats {} {
+ global displayFormats
+ set formats [glob -nocomplain formats/*.tcl]
+ foreach f $formats {
+ source $f
+ set l [expr [string length $f] - 5]
+ lappend displayFormats [string range $f 8 $l]
+ }
+ puts $displayFormats
+}
+
+proc destroyG {w} {
+ global windowGeometry
+ set windowGeometry($w) [wm geometry $w]
+ destroy $w
+}
+
+proc toplevelG {w} {
+ global windowGeometry
+
+ toplevel $w
+ if {[info exists windowGeometry($w)]} {
+ set g $windowGeometry($w)
+ if {$g != ""} {
+ wm geometry $w $g
+ }
+ }
+}
+
+
if {[file readable "clientrc.tcl"]} {
source "clientrc.tcl"
}
+if {[file readable "clientg.tcl"]} {
+ source "clientg.tcl"
+}
+
set queryButtonsFind [lindex $queryButtons 0]
set queryInfoFind [lindex $queryInfo 0]
-command ${ok-action}
pack $w.bot.left.ok -expand yes -ipadx 2 -ipady 2 -padx 3 -pady 3
button $w.bot.cancel -width 6 -text {Cancel} \
- -command "destroy $w"
+ -command [list destroy $w]
pack $w.bot.cancel -side left -expand yes
if {$g} {
proc about-target {} {
set w .about-target-w
- toplevel $w
+ toplevelG $w
wm title $w "About target"
- place-force $w .
top-down-window $w
set i [z39 targetImplementationName]
pack $w.top.in $w.top.ii $w.top.iv $w.top.op -side top -anchor nw
- bottom-buttons $w [list {Close} [list destroy $w]] 1
+ bottom-buttons $w [list {Close} [list destroyG $w]] 1
}
proc about-origin {} {
set w .about-origin-w
- toplevel $w
+ toplevelG $w
wm title $w "About IrTcl"
place-force $w .
pack $w.top.in $w.top.ii -side top -anchor nw
- bottom-buttons $w [list {Close} [list destroy $w]] 1
-}
-
-proc display-raw {sno no w} {
- $w delete 0.0 end
- set r [z39.$sno getMarc $no list * * *]
- foreach line $r {
- set tag [lindex $line 0]
- set indicator [lindex $line 1]
- set fields [lindex $line 2]
-
- if {$indicator != ""} {
- insertWithTags $w "$tag $indicator" marc-tag
- } else {
- insertWithTags $w "$tag " marc-tag
- }
- foreach field $fields {
- set id [lindex $field 0]
- set data [lindex $field 1]
- if {$id != ""} {
- insertWithTags $w " $id " marc-id
- }
- set start [$w index insert]
- insertWithTags $w $data {}
- }
- $w insert end "\n"
- }
-}
-
-proc display-nice {sno no w} {
- $w delete 0.0 end
- set i [z39.$sno getMarc $no field 245 * a]
- if {$i != ""} {
- set i [lindex $i 0]
- insertWithTags $w "Title: " marc-tag
- insertWithTags $w $i marc-data
- set i [z39.$sno getMarc $no field 245 * b]
- if {$i != ""} {
- insertWithTags $w [lindex $i 0] marc-data
- }
- $w insert end "\n"
- }
- set i [z39.$sno getMarc $no field 700 * a]
- if {$i == ""} {
- set i [z39.$sno getMarc $no field 100 * a]
- }
- if {$i != ""} {
- if {[llength $i] > 1} {
- insertWithTags $w "Authors: " marc-tag
- } else {
- insertWithTags $w "Author: " marc-tag
- }
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
- set i [z39.$sno getMarc $no field 110 * *]
- if {$i != ""} {
- insertWithTags $w "Co-Author: " marc-tag
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
-
- set i [z39.$sno getMarc $no field 650 * *]
- if {$i != ""} {
- set n 0
- insertWithTags $w "Keywords: " marc-tag
- foreach x $i {
- if {$n > 0} {
- $w insert end ", "
- }
- insertWithTags $w $x marc-data
- incr n
- }
- $w insert end "\n"
- }
- set i [concat [z39.$sno getMarc $no field 260 * a] \
- [z39.$sno getMarc $no field 260 * b]]
- if {$i != ""} {
- insertWithTags $w "Publisher: " marc-tag
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
- set i [z39.$sno getMarc $no field 020 * a]
- if {$i != ""} {
- insertWithTags $w "ISBN: " marc-tag
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
- set i [z39.$sno getMarc $no field 022 * a]
- if {$i != ""} {
- insertWithTags $w "ISSN: " marc-tag
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
- set i [z39.$sno getMarc $no field 030 * a]
- if {$i != ""} {
- insertWithTags $w "CODEN: " marc-tag
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
- set i [z39.$sno getMarc $no field 015 * a]
- if {$i != ""} {
- insertWithTags $w "Ctl number: " marc-tag
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
- set i [z39.$sno getMarc $no field 010 * a]
- if {$i != ""} {
- insertWithTags $w "LC number: " marc-tag
- foreach x $i {
- insertWithTags $w $x marc-data
- }
- $w insert end "\n"
- }
+ bottom-buttons $w [list {Close} [list destroyG $w]] 1
}
proc show-full-marc {sno no b} {
set new 0
} else {
- toplevel $w
+ toplevelG $w
wm minsize $w 0 0
pack $w.top -side top -fill both -expand yes
pack $w.bot -fill both
- text $w.top.record -width 60 -height 12 -wrap word \
+ text $w.top.record -width 60 -height 5 -wrap word \
-yscrollcommand [list $w.top.s set]
scrollbar $w.top.s -command [list $w.top.record yview]
set new 1
}
- $w.top.record tag configure marc-tag -foreground blue
+ if {[tk colormodel .] == "color"} {
+ $w.top.record tag configure marc-tag -foreground blue
+ $w.top.record tag configure marc-id -foreground red
+ } else {
+ $w.top.record tag configure marc-tag -foreground black
+ $w.top.record tag configure marc-id -foreground black
+ }
$w.top.record tag configure marc-data -foreground black
- $w.top.record tag configure marc-id -foreground red
if {$displayFormat == "nice"} {
display-nice $sno $no $w.top.record
pack $w.top.s -side right -fill y
pack $w.top.record -expand yes -fill both
-
- bottom-buttons $w [list \
+
+ if {$b} {
+ bottom-buttons $w [list \
{Close} [list destroy $w] \
{Raw} [list display-raw $sno $no $w.top.record] \
{Duplicate} [list show-full-marc $sno $no 1]] 0
+ } else {
+ bottom-buttons $w [list \
+ {Close} [list destroyG $w] \
+ {Raw} [list display-raw $sno $no $w.top.record] \
+ {Duplicate} [list show-full-marc $sno $no 1]] 0
+ }
+
} else {
$w.bot.2 configure -command [list display-raw $sno $no $w.top.record]
$w.bot.4 configure -command [list show-full-marc $sno $no 1]
ir-scan z39.scan z39
if {![winfo exists $w]} {
- toplevel $w
+ toplevelG $w
wm title $w "Scan"
bind $w.top.entry <KeyRelease> [list scan-term-h $attr]
if {1} {
listbox $w.top.list -yscrollcommand [list $w.top.scroll set] \
- -font fixed -geometry 50x14
+ -font fixed
scrollbar $w.top.scroll -orient vertical -border 1
pack $w.top.list -side left -fill both -expand yes
pack $w.top.scroll -side right -fill y
pack $w.top.list -side left -fill both -expand yes
}
- bottom-buttons $w [list {Close} [list destroy $w] \
+ bottom-buttons $w [list {Close} [list destroyG $w] \
{Up} [list scan-up $attr] \
{Down} [list scan-down $attr]] 0
bind $w.top.list <Up> [list scan-up $attr]
cascade-target-list
puts $profile($target)
- destroy $w
+ destroyG $w
}
proc place-force {window parent} {
}
proc protocol-setup {target} {
-
global profile
global csRadioType
global protocolRadioType
set wno [lindex $profile($target) 12]
set w .setup-${wno}
- toplevel $w
+ toplevelG $w
wm title $w "Setup $target"
- place-force $w .
top-down-window $w
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] [list destroyG $w]
foreach sub {description host port idAuthentication \
maximumRecordSize preferredMessageSize} {
-padx 4 -side top -fill x
# Ok-cancel
- top-down-ok-cancel $w [list protocol-setup-action $target] 0
+ bottom-buttons $w [list {Ok} [list protocol-setup-action $target] \
+ {Cancel} [list destroyG $w]] 0
+# top-down-ok-cancel $w [list protocol-setup-action $target] 0
}
proc database-select-action {} {
}
}
+proc save-geometry {} {
+ global windowGeometry
+
+ set windowGeometry(.) [wm geometry .]
+
+ set f [open "clientg.tcl" w]
+
+ foreach n [array names windowGeometry] {
+ puts -nonewline $f "set \{windowGeometry($n)\} \{"
+ puts -nonewline $f $windowGeometry($n)
+ puts $f "\}"
+ }
+ close $f
+}
+
proc save-settings {} {
global hotTargets
global profile
global queryTypes
global queryButtons
global queryInfo
-
+
set f [open "clientrc.tcl" w]
puts $f "# Setup file"
puts $f "set hotTargets \{ $hotTargets \}"
puts -nonewline $f "set queryInfo \{"
puts -nonewline $f $queryInfo
puts $f "\}"
-
close $f
set settingsChanged 0
}
proc exit-action {} {
global settingsChanged
+ save-geometry
if {$settingsChanged} {
set a [alert "you havent saved your settings. Do you wish to save?"]
if {$a} {
$w.0 configure -background red
}
+if {[info exists windowGeometry(.)]} {
+ set g $windowGeometry(.)
+ if {$g != ""} {
+ wm geometry . $g
+ }
+}
+
+read-formats
+
frame .top -border 1 -relief raised
frame .lines -border 1 -relief raised
frame .mid -border 1 -relief raised