summaryrefslogtreecommitdiffstats
path: root/ds9/library/catvot.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library/catvot.tcl')
-rw-r--r--ds9/library/catvot.tcl70
1 files changed, 70 insertions, 0 deletions
diff --git a/ds9/library/catvot.tcl b/ds9/library/catvot.tcl
new file mode 100644
index 0000000..ad040ef
--- /dev/null
+++ b/ds9/library/catvot.tcl
@@ -0,0 +1,70 @@
+# Copyright (C) 1999-2016
+# Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+# For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+# SAMP
+
+proc CATVOTURL {url catalog title} {
+ if {[string length $url] == 0} {
+ return
+ }
+
+ ParseURL $url r
+ switch -- $r(scheme) {
+ ftp {CATVOTFTP $r(authority) $r(path)}
+ file {CATVOTFile $r(path)}
+ http -
+ default {CATVOTHTTP $url $catalog $title}
+ }
+}
+
+proc CATVOTFTP {host path} {
+ global loadParam
+ global ds9
+ global debug
+
+ set ftp [ftp::Open $host "ftp" "-ds9@" -mode passive]
+ if {$ftp > -1} {
+ set fn [tmpnam [file extension $path]]
+ set ftp::VERBOSE $debug(tcl,ftp)
+ set "ftp::ftp${ftp}(Output)" FTPLog
+ ftp::Type $ftp binary
+ if {[ftp::Get $ftp $path $fn]} {
+ CATVOTFile $fn
+ }
+
+ ftp::Close $ftp
+
+ if {[file exists $fn]} {
+ catch {file delete -force $fn}
+ }
+ }
+}
+
+proc CATVOTHTTP {url catalog title} {
+ global icat
+
+ CATDialog catvot {} $catalog $title none
+
+ set varname [lindex $icat(cats) end]
+ upvar #0 $varname var
+ global $varname
+
+ set ${varname}(query) {}
+ set ${varname}(url) $url
+ set ${varname}(proc,parser) VOTParse
+
+ CATLoad $varname
+}
+
+proc CATVOTFile {fn} {
+ global icat
+
+ CATDialog catvot {} {} {} none
+ if {$fn != {}} {
+ CATLoadFn [lindex $icat(cats) end] $fn VOTRead
+ }
+}
+