tkxmllint.tcl
Go to the documentation of this file.00001
00002
00003
00004
00005 exec wish "$0" "$@"
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 VERSION = 1.9
00038
00039
00040
00041 lappend auto_path [file dirname [info nameofexecutable]]
00042
00043 package require dom::libxml2 3.2
00044
00045 package require msgcat
00046 namespace import ::msgcat::mc
00047
00048 package require uri 1.2
00049
00050 tk appname tkxmllint
00051
00052
00053
00054 source [file join [file dirname [info script]] common.tcl]
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 ret Init win (
00076 type upvar \#0 , type State$, type win , type state
00077
00078 , type set , type w [, type expr , optional $win === "." =? { : $, type win)]
00079
00080 array set state {
00081 url {}
00082 cwd {}
00083 noent 0
00084 nonet 0
00085
00086 display:entrefs 0
00087 }
00088
00089 wm title $win "Tk XML Lint"
00090
00091 switch [tk windowingsystem] {
00092 aqua -
00093 classic {
00094 metakey = Command
00095 metakeylabel = Command-
00096 }
00097 default {
00098 metakey = Control
00099 metakeylabel = Ctrl+
00100 }
00101 }
00102
00103 menu $w.menu -tearoff 0
00104 $win configure -menu $w.menu
00105 $w.menu add cascade -label [mc File] -menu $w.menu.file
00106 menu $w.menu.file -tearoff 1
00107 $w.menu.file add command -label [mc {New Window}] -command NewWindow -accel ${metakeylabel}N
00108 bind $win <${metakey}-n> NewWindow
00109 $w.menu.file add separator
00110 $w.menu.file add command -label [mc {Save As...}] -command [list SaveAs $win] -state disabled
00111 $w.menu.file add separator
00112 $w.menu.file add command -label [mc Quit] -command {destroy .} -accel ${metakeylabel}Q
00113 bind $win <${metakey}-q> {destroy .}
00114
00115 $w.menu add cascade -label [mc Help] -menu $w.menu.help
00116 menu $w.menu.help -tearoff 0
00117 $w.menu.help add command -label [mc {About tkxmllint}] -command tkAboutDialog -accel ${metakeylabel}?
00118
00119
00120 catch {bind $win <${metakey}-?> tkAboutDialog}
00121
00122 if {$::tcl_platform(platform) == "macintosh" ||
00123 ($::tcl_platform(platform) == "unix" && $::tcl_platform(os) == "Darwin")} {
00124 $w.menu add cascade -label tkxmllint -menu $w.menu.apple
00125 menu $w.menu.apple -tearoff 0
00126 $w.menu.apple add command -label [mc {About tkxmllint}] -command tkAboutDialog
00127 }
00128
00129 frame $w.controls
00130 grid $w.controls - -row 0 -column 0 -sticky ew
00131 button $w.controls.check -text [mc Check] -command [list Check $win]
00132
00133
00134 grid $w.controls.check -row 0 -column 0 -sticky w
00135 grid columnconfigure $w.controls 0 -weight 1
00136
00137 labelframe $w.doc -text [mc Document]
00138 grid $w.doc - -row 1 -column 0 -sticky ew
00139 label $w.doc.url -text [mc URL:]
00140 entry $w.doc.urlentry -width 60 -textvariable State${win}(url)
00141 button $w.doc.browse -text [mc Browse] -command [list Browse $win url -title {Select XML Document}]
00142 grid $w.doc.url -row 0 -column 0 -sticky w
00143 grid $w.doc.urlentry -row 0 -column 1 -sticky ew
00144 grid $w.doc.browse -row 0 -column 2 -sticky e
00145 grid columnconfigure $w.doc 1 -weight 1
00146
00147 labelframe $w.options -text [mc Options]
00148 grid $w.options - -row 2 -column 0 -sticky news
00149 checkbutton $w.options.noout -text [mc {Display document}] -variable State${win}(display)
00150 checkbutton $w.options.timing -text [mc {Display timing}] -variable State${win}(timing)
00151 checkbutton $w.options.xinclude -text [mc XInclude] -variable State${win}(xinclude)
00152 checkbutton $w.options.noent -text [mc {Substitute entities}] -variable State${win}(noent)
00153 checkbutton $w.options.logentities -text [mc {Log entities}] -variable State${win}(display:entrefs)
00154 checkbutton $w.options.nonet -text [mc {No network}] -variable State${win}(nonet)
00155 menubutton $w.options.encode -text [mc Encoding...] -menu $w.options.encode.menu
00156 m = [menu $w.options.encode.menu -tearoff 0]
00157 $m add radiobutton -label [mc utf-8] -variable ::State${win}(encoding) -value utf-8
00158 $m add radiobutton -label [mc ascii] -variable ::State${win}(encoding) -value ascii
00159 entry $w.options.encoding -textvariable ::State${win}(encoding)
00160 state = (encoding) utf-8
00161 grid $w.options.noout -row 0 -column 0 -sticky w
00162 grid $w.options.timing -row 1 -column 0 -sticky w
00163 grid $w.options.logentities -row 2 -column 0 -sticky w
00164 grid $w.options.xinclude -row 0 -column 1 -sticky w
00165 grid $w.options.noent -row 1 -column 1 -sticky w
00166 grid $w.options.nonet -row 2 -column 1 -sticky w
00167 grid $w.options.encode -row 0 -column 2 -sticky w
00168 grid $w.options.encoding -row 0 -column 3 -sticky ew
00169 grid columnconfigure $w.options 3 -weight 1
00170
00171 labelframe $w.validation -text [mc Validation]
00172 grid $w.validation - -row 3 -column 0 -sticky news
00173 radiobutton $w.validation.none -text [mc none] -variable State${win}(validate) -value no
00174 radiobutton $w.validation.dtd -text [mc DTD] -variable State${win}(validate) -value dtd
00175 radiobutton $w.validation.wxs -text [mc WXS] -variable State${win}(validate) -value wxs
00176 labelframe $w.validation.doc -text [mc {Schema Document}]
00177 label $w.validation.doc.url -text [mc URL:]
00178 entry $w.validation.doc.urlentry -width 40 -textvariable State${win}(schemaurl)
00179 button $w.validation.doc.browse -text [mc Browse] -command [list Browse $win schemaurl -title {Select Schema Document}]
00180 grid $w.validation.doc.url -row 0 -column 0 -sticky w
00181 grid $w.validation.doc.urlentry -row 0 -column 1 -sticky ew
00182 grid $w.validation.doc.browse -row 0 -column 2 -sticky e
00183 grid columnconfigure $w.validation.doc 1 -weight 1
00184 state = (validate) no
00185 grid $w.validation.none -row 0 -column 0 -sticky w
00186 grid $w.validation.dtd -row 0 -column 1 -sticky w
00187 grid $w.validation.wxs -row 0 -column 2 -sticky w
00188 grid $w.validation.doc - - - -row 1 -sticky ew
00189 grid columnconfigure $w.validation 2 -weight 1
00190
00191 state = (messages) [labelframe $w.messages -text [mc Messages]]
00192 grid $w.messages - -row 4 -column 0 -sticky news
00193 text $w.messages.log -wrap none \
00194 -state disabled \
00195 -xscrollcommand [list $w.messages.xscroll ] \
00196 -yscrollcommand = [list $w.messages.yscroll ]
00197 scrollbar = $w.messages.xscroll -orient horizontal \
00198 -command [list $w.messages.log xview]
00199 scrollbar $w.messages.yscroll -orient vertical \
00200 -command [list $w.messages.log yview]
00201 grid $w.messages.log -row 0 -column 0 -sticky news
00202 grid $w.messages.yscroll -row 0 -column 1 -sticky ns
00203 grid $w.messages.xscroll -row 1 -column 0 -sticky ew
00204 grid rowconfigure $w.messages 0 -weight 1
00205 grid columnconfigure $w.messages 0 -weight 1
00206
00207 SetProperties $win $w.messages.log
00208
00209 frame $w.feedback
00210 grid $w.feedback - -row 5 -column 0 -sticky ew
00211 label $w.feedback.msg -textvariable State${win}(feedback)
00212 state = (progress) [canvas $w.feedback.progress \
00213 -width 100 -height 25 -relief sunken]
00214 state = (progressbar) [$w.feedback.progress create rectangle 0 0 1 25 \
00215 -fill blue -disabledfill white -state disabled]
00216 grid $w.feedback.progress -row 0 -column 1
00217 grid $w.feedback.msg -row 0 -column 0 -sticky ew
00218 grid columnconfigure $w.feedback 0 -weight 1
00219
00220 grid rowconfigure $win 3 -weight 1
00221 grid columnconfigure $win 1 -weight 1
00222
00223 return {}
00224 }
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245 ret tkAboutDialog () {
00246 catch {destroy .about}
00247 toplevel .about
00248 catch {::tk::unsupported::MacWindowStyle style .about floatProc}
00249 wm title .about [mc {About tkxmllint}]
00250 label .about.libxml2logo -image libxml2Logo
00251 label .about.tcllogo -image tclLogo
00252 text .about.msg -width 40 -height 10 -font Arial
00253 .about.msg insert end [mc [format "tkxmllint - A GUI for xmllint
00254
00255 Version %s
00256
00257 Powered by:
00258 \tlibxml2\tv%s
00259 \tTclXML\tv%s
00260 \tTcl/Tk\tv%s
00261
00262 http:
00263 " $::VERSION $::xml::libxml2::libxml2version \
00264 [package require xml] [info patchlevel]]]
00265
00266 .about.msg configure -state disabled
00267
00268 grid .about.libxml2logo -row 0 -column 2 -sticky news
00269 grid .about.tcllogo -row 1 -column 2 -sticky news
00270 grid .about.msg -row 0 -column 1 -rowspan 2 -sticky news -padx 20 -pady 20
00271 grid rowconfigure .about 0 -weight 1
00272 grid rowconfigure .about 1 -weight 1
00273 grid columnconfigure .about 1 -weight 1
00274
00275 return {}
00276 }
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297 ret SaveAs (type win) {
00298 upvar \#0 State$win state
00299
00300 if {![info exists state(dom)]} {
00301 tk_messageBox -parent $win -title [mc {No Document}] \
00302 -message [mc {No document to save}] -type ok
00303 return {}
00304 }
00305
00306 set w [expr {$win == "." ? {} : $win}]
00307
00308 set cwd [pwd]
00309 if {$state(cwd) != {}} {
00310 set cwd $state(cwd)
00311 }
00312
00313 set fname [tk_getSaveFile -parent $win -title [mc {Save As...}] -initialdir $cwd]
00314
00315 if {![string length $fname]} {
00316 return {}
00317 }
00318
00319 set state(cwd) [file dirname $fname]
00320
00321 if {[catch {open $fname w} ch]} {
00322 tk_messageBox -parent $win -icon error -type ok -message "Unable to open \"[file nativename $fname]\" for writing"
00323 return {}
00324 }
00325
00326 fconfigure $ch -encoding $state(encoding)
00327 puts $ch [dom::serialize $state(dom) -encoding $state(encoding)]
00328 close $ch
00329
00330 return {}
00331 }
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352 ret NewWindow () {
00353 global counter
00354
00355 Init [toplevel .top[Incr counter]]
00356
00357 return {}
00358 }
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379 ret Check win (
00380 type upvar \#0 , type State$, type win , type state
00381
00382 , type set , type w [, type expr , optional $win === "." =? { : $, type win)]
00383
00384 set fname [GetFilename $win $w.doc.urlentry url]
00385 if {![string length $fname]} {
00386 return
00387 }
00388
00389 dodisplay = $state(display)
00390
00391 Log clear $win
00392 $w.menu.file entryconfigure [mc {Save As...}] -state disabled
00393
00394 catch {
00395 dom::destroy $state(dom)
00396 un state = (dom)
00397 }
00398
00399 time = (start) [clock clicks -milliseconds]
00400
00401 if {[catch {ReadAndParseXML $win [mc "source"] $fname $state(url) time \
00402 -noent $state(noent) \
00403 -nonet $state(nonet)} doc]} {
00404 return
00405 }
00406 $w.menu.file entryconfigure [mc {Save As...}] -state normal
00407
00408 switch -- $state(validate) {
00409 dtd {
00410 Feedback $win [mc "Validating document"]
00411 if {[catch {$doc dtd validate} msg]} {
00412 Log addXMLError $win [dom::serialize $doc] $msg
00413 Feedback $win [mc "Document is not valid"]
00414 dodisplay = 0
00415 } else {
00416 Log add $win $msg
00417 }
00418 time = (validate) [clock clicks -milliseconds]
00419 Log timing $win "Validation took [expr $time(validate) - $time(last)]ms\n"
00420 time = (last) $time(validate)
00421 }
00422 wxs {
00423 Feedback $win [mc "Schema-validating document"]
00424 schemafname = [GetFilename $win $w.validation.doc.urlentry schemaurl]
00425 if {[string length $schemafname]} {
00426 schematime = (start) $time(last)
00427 if {[catch {ReadAndParseXML $win [mc "schema"] $schemafname ? schematime} schemadoc]} {
00428
00429
00430 } else {
00431 time = (last) $schematime(last)
00432 Feedback $win [mc "Preparing schema"]
00433 if {[catch {$schemadoc schema compile} msg]} {
00434 Log add $win $msg
00435 Feedback $win [mc "Preparing schema failed"]
00436 time = (schemacompile) [clock clicks -milliseconds]
00437 time = (last) $time(schemacompile)
00438 dodisplay = 0
00439 } else {
00440 time = (schemacompile) [clock clicks -milliseconds]
00441 Log timing $win "Preparing schema took [expr $time(schemacompile) - $time(last)]ms\n"
00442 time = (last) $time(schemacompile)
00443
00444 Feedback $win [mc "Schema-validating document"]
00445 if {[catch {$schemadoc schema validate $doc} msg]} {
00446 Log addXMLError $win [dom::serialize $doc] $msg
00447 Feedback $win [mc "Document is not schema-valid"]
00448 dodisplay = 0
00449 } else {
00450 Log add $win $msg
00451 Feedback $win [mc "Document is schema-valid"]
00452 }
00453 time = (schemavalidate) [clock clicks -milliseconds]
00454 Log timing $win "Schema validation took [expr $time(schemavalidate) - $time(last)]ms\n"
00455 time = (last) $time(schemavalidate)
00456 }
00457
00458
00459
00460 dom::destroy $schemadoc
00461 }
00462 }
00463 }
00464 }
00465
00466 if {$dodisplay} {
00467 Log add $win [dom::serialize $doc -encoding $state(encoding)]
00468 time = (serialize) [clock clicks -milliseconds]
00469 Log timing $win "Displaying document took [expr $time(serialize) - $time(last)]ms\n"
00470 time = (last) $time(serialize)
00471 }
00472
00473 Feedback $win [mc "Processing completed"]
00474 after 2000 [list Feedback $win {}]
00475
00476
00477
00478 state = (dom) $doc
00479
00480 Log timing $win "Total time: [expr $time(last) - $time(start)]ms\n"
00481
00482 Log view $win start
00483
00484 return {}
00485 }
00486
00487
00488
00489
00490 image create photo libxml2Logo -data {
00491 R0lGODlhtABEAPf/AP
00492 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
00640 AygC2YURQk6o44Q
00641 jiO2606sKI0wYg4qhllAA/Jiw8YLVFyKo5gPYrDPkycacDCeDRJIEzUFCgqG
00642 gnZsYZSEd06ZwKU9bsAigkNh4KJMzBzaZEKEPBsUhk1ECNPRhWyYQZlJSbQU
00643 gAFMISCIHHaZoI4mrriijk
00644 gy3m0MGpJ4GVRVh8oMmBjBm84QCDAdoSwAQC2MQsmVO0LSiTJYxZCJQwZtjE
00645 jIV0AOIJeIMxxoYf2mn/JIB3PngCApcemGEDb+j9AF6Gwohn3oUScFeXqwu6
00646 AoZ3PuHXpWRmwKIESgdeoQIvGM1BgSaaMMSQwB2+4o9HUJVgizHGAOSENhR5
00647 ABB+VknCEDrm+aQOXh5IgZawXBbWCGSoCOCPelAgwJScWdpbh7ldgqGOfQsC
00648 5RARAlkFDoJ4sSNMMvSxgZkUFnJgmgYyaHSCNtq2vQF6lF/ok3iK58+Q6Bs9
00649 oIXYvV1DjjJMydtElXZmoQymd2mE5MEDd/8WPfyY54ogGsbujyTAuIIWeCCp
00650 IxFaAJAWkGgFlF4mLGRYIwdzUMINIuCFCqzAPBhYwxriAQQ4JMMGJPiBCixA
00651 /w8IfGMN/HADDGxgASeQ4AtHaMEPYACBJtSBD+yoQhV+cAMVbOAGVeDHDWbQ
00652 gAvagBqcsEALGtACMfCgAURQwg9QAQIYhIETEABBAaRQNRsQARXIQ2I79sAJ
00653 IH4gHjDgQTIccUZH6EMfovjGBjgAG4GRDwACQIJM6jGLHPjAA8oZhB0SkQg7
00654 BDIRgwAkIQc5iEFwBRxNUkSuwCKW70TpgEb4xRR2YboG1GIDIWCBCQRgngpI
00655 IgIdkEMtapGGD6jjC7aoRxpEYo5VziAkHUCBMjTQgRvkUgS5vMEXvFGGZ0TA
00656 GxsAGxZQsIEPzOCUH+iAOTrwgTSkQQ4dgA8y01CPG/+YAwUaUAcIpPkFDQzz
00657 Bmk45Q024ExbpOEH02DnNHqxgHps4AKwKE9sXAILmFSgB2VogcwSxog5BFSg
00658 AyUoQYVwUIQitAuMYGhDZ2EAKuQgALfohboIgAEEfNJ1JnABAS5gTBSsKwIR
00659 QEFJI/CMEFyApCg4KQcIwAEOPKMMZRgpFsrAAUmwgAWS4MAFLuBSKISgDCVV
00660 hk0vQFMsrOunHBBqUssQAqZ+VKkhSGkEjGnUlJYBpCUtqU05AAsTSDA2sChI
00661 mFCwEjpigABYYMYDDJAwKsRVrnOla13tGtdd5FWvuxgHFTwwhl7YwmadFCtL
00662 BDAAE5jCBbBg7GJhwYIe9ID/BbAoQQkcy1jKmsIUFVAsLHrwBha4oAImQIIJ
00663 KmBZF2BAs5ZlrE4n29rGYgADrG1sZS8LCxdc9rUuqCxqc/vbEmwWAYVtCwoC
00664 8AIPBAAXG4UFFLDwBRUAwgE6oG51rXtd7GZXuzqYACZIkAZ1oABBFcgopQRw
00665 Xo2idQXrXS960cte+A5AvgNYQXrd697yCWAF9K3vff3L3vsC2L+UInBbcBEA
00666 D5xrEIZFLCwIUAZvdICV5DRlhS18YQxnGMMzcKU6NBABDvSgAkggboFNfGIU
00667 p1jFK2axSgYRgAkcIQDS4ACDTVCCN/SUpN7whgZ8/GMgB1nIQw6yN0J6U0nA
00668 YsQl4G5xk538ZCgTmAPSCMARiACKAGxBZwPYSAlY4AUCQAGmYyZzmc185jND
00669 gQCS6IELTGGCAaQ3ynOmc51TvIUAgIII/8BBQXAAR7Ry2bSmkG2hDX1oRCda
00670 0aodLRLoK2c7R1rSda5AnwOAg39k+sUBYMINYnPe9c5X1KMmdalNLer+TlrV
00671 q47yDZhQkEFkWtZX0EQAcqEKXHyByazmda99neIVfAEXqshFADRxBVknWw0H
00672 6F6znf1saEdb2tOmdrWtvZADqCHZ2ybCISagg2JfW9zjJne5zU3tXHD3EHtO
00673 dkAAADs=
00674 }
00675 image create photo tclLogo -data {
00676 R0lGODlhYQCWAPUAAP
00677 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
00731 5V+g+JBhTvOaGyEIADs=
00732 }
00733
00734 Init .
00735