20 namespace eval metadata {
22 set metadatafilename ""
26 set datahash(dc:title) ""
27 set datahash(dc:description) ""
28 set datahash(dc:date) ""
29 set datahash(dc:subject) ""
30 set datahash(dc:type) "Dataset"
31 set datahash(dc:source) ""
32 set datahash(dc:coverage) ""
33 set datahash(dc:creator) "Shanes Chess Information Database (Scid) $::scidVersion"
34 set datahash(dc:rights) ""
35 set datahash(dc:format) "application/sciddb"
36 set datahash(dc:identifier) ""
37 set datahash(dc:language) ""
38 set datahash(dc:audience) ""
39 set datahash(dc:provenance) ""
40 set datahash(dc:rightsholder) ""
41 set datahash(dc:instructionalmethod) ""
42 set datahash(dc:accrualmethos) ""
43 set datahash(dc:accrualperiodicity) ""
44 set datahash(dc:accrualpolidy) ""
50 proc saveOptions {metadatafile} {
55 set ::metadata::DBMetadata ""
56 foreach key [
array names ::metadata::datahash *] {
57 lappend ::metadata::DBMetadata [list $key $::metadata::datahash($key)]
60 if {[
catch {open $metadatafile w} optionF]} {
61 tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
62 -message "Unable to write options file: $metadatafile\n$optionF"
64 puts $optionF "# Scid options file"
65 puts $optionF "# Version: $::scidVersion, $::scidVersionDate"
67 puts $optionF "# Descriptive Metadata"
68 puts $optionF "# This file is generated automatically. Do NOT edit."
70 set curtime [
clock format [
clock seconds]]
72 puts $optionF "# Last Update: $curtime"
75 foreach i {::metadata::DBMetadata } {
76 puts $optionF "set $i [list [
set $i]]"
82 regsub "sme$" $metadatafile "sg3" dbname
83 regsub "sme$" $metadatafile "xml" metadatafile
84 if {[
catch {open $metadatafile w} optionF]} {
85 tk_messageBox -title "Scid: Unable to write file" -type ok -icon warning \
86 -message "Unable to write options file: $metadatafile\n$optionF"
88 puts $optionF "<rdf:RDF"
89 puts $optionF " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\""
90 puts $optionF " xmlns:dc=\"http://purl.org/dc/elements/1.1/\">"
91 puts $optionF " <rdf:Description rdf:about=\"$dbname\">"
92 foreach key [
array names ::metadata::datahash *] {
93 puts $optionF " <$key>$::metadata::datahash($key)</$key>"
95 puts $optionF " </rdf:Description>"
96 puts $optionF "</rdf:RDF>"
109 set w .metadataWindow
110 if {[
winfo exists .metadataWindow]} {
112 destroy .metadataWindow
117 wm title $w "Database Information"
121 set currentdb [
sc_base current]
122 set metadatafile [
file nativename [
sc_base filename $currentdb]]
124 set metadatafile "$metadatafile.sme"
128 set ::metadata::DBMetadata ""
129 set ::metadata::datahash(dc:title) [
file tail [
sc_base filename $currentdb]]
130 set ::metadata::datahash(dc:description) ""
131 set ::metadata::datahash(dc:date) [
clock format [
clock seconds]]
132 set ::metadata::datahash(dc:subject) ""
133 set ::metadata::datahash(dc:type) "Dataset"
134 set ::metadata::datahash(dc:source) ""
135 set ::metadata::datahash(dc:coverage) ""
136 set ::metadata::datahash(dc:creator) "Shanes Chess Information Database (Scid) $::scidVersion"
137 set ::metadata::datahash(dc:rights) ""
138 set ::metadata::datahash(dc:format) "application/sciddb"
139 set ::metadata::datahash(dc:identifier) ""
140 set ::metadata::datahash(dc:language) ""
141 set ::metadata::datahash(dc:audience) ""
142 set ::metadata::datahash(dc:provenance) ""
143 set ::metadata::datahash(dc:rightsholder) ""
144 set ::metadata::datahash(dc:instructionalmethod) ""
145 set ::metadata::datahash(dc:accrualmethos) ""
146 set ::metadata::datahash(dc:accrualperiodicity) ""
147 set ::metadata::datahash(dc:accrualpolidy) ""
152 bind $w <Configure> "recordWinSize $w"
154 set ::metadata::metadatafilename $metadatafile
156 button $w.bOk -text OK -command {
157 ::metadata::saveOptions $::metadata::metadatafilename
158 destroy .metadataWindow
160 button $w.bCancel -text [
::tr "Cancel"] -command "destroy $w"
165 set textcolour "black"
166 if {[
catch {source $metadatafile}]} {
168 foreach key [
array names ::metadata::datahash *] {
169 lappend ::metadata::DBMetadata [list $key $::metadata::datahash($key)]
171 set textcolour "blue"
176 foreach i $metadata::DBMetadata {
178 set tag [
lindex $i 0]
179 set val [
lindex $i 1]
181 label $w.$tag -fg $textcolour -text $tag
182 set ::metadata::datahash($tag) $val
184 entry $w.v$tag -width 60 -textvariable "::metadata::datahash($tag)"
186 grid $w.$tag -stick w -column 0 -row $line
187 grid $w.v$tag -stick w -column 1 -row $line
189 set line [
expr {$line + 1 }]
193 grid $w.bOk -stick e -column 0 -row $line -pady 10
194 grid $w.bCancel -column 1 -row $line -pady 10
195 bind $w <Escape> "$w.bCancel invoke"
197 bind $w <F1> { helpWindow Metadata}