summaryrefslogtreecommitdiffstats
path: root/ds9
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2018-06-04 18:56:09 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2018-06-04 18:56:09 (GMT)
commitb2e4e09a867e5818a145eaf346e69cd88efeadc5 (patch)
tree306de34d0d914e9970f24aa6b3bbec57f4507355 /ds9
parentc4d56a837ea043404ca8cff41330770bc0614b1f (diff)
downloadblt-b2e4e09a867e5818a145eaf346e69cd88efeadc5.zip
blt-b2e4e09a867e5818a145eaf346e69cd88efeadc5.tar.gz
blt-b2e4e09a867e5818a145eaf346e69cd88efeadc5.tar.bz2
add ds9 catalog send parser
Diffstat (limited to 'ds9')
-rw-r--r--ds9/doc/release/r8.0.html1
-rw-r--r--ds9/library/cat.tcl37
-rw-r--r--ds9/library/layout.tcl82
-rw-r--r--ds9/library/source.tcl4
-rw-r--r--ds9/library/util.tcl8
-rw-r--r--ds9/parsers/catparser.tac2
-rw-r--r--ds9/parsers/catsendlex.fcl13
-rw-r--r--ds9/parsers/catsendparser.tac28
-rw-r--r--ds9/parsers/viewlex.fcl2
-rw-r--r--ds9/parsers/viewparser.tac2
-rw-r--r--ds9/parsers/viewsendlex.fcl39
-rw-r--r--ds9/parsers/viewsendparser.tac76
12 files changed, 215 insertions, 79 deletions
diff --git a/ds9/doc/release/r8.0.html b/ds9/doc/release/r8.0.html
index 121fd81..8486a2a 100644
--- a/ds9/doc/release/r8.0.html
+++ b/ds9/doc/release/r8.0.html
@@ -14,6 +14,7 @@
<ol>
<ol>
<li><tt>04.18.2018 GUI: fixed an issue with loading gzipped multiple extension fits files with the -multiframe option.</tt></li>
+ <li><tt>05.25.2018 MMT: updated Binospec template. </tt></li>
<li><tt><b>xx.xx.2018 RELEASE version 8.0b1</b></tt></li>
</ol>
</ol>
diff --git a/ds9/library/cat.tcl b/ds9/library/cat.tcl
index c97c12e..0fc90fa 100644
--- a/ds9/library/cat.tcl
+++ b/ds9/library/cat.tcl
@@ -1541,8 +1541,24 @@ proc CatalogCmdSymbolSave {fn} {
}
proc ProcessSendCatalogCmd {proc id param sock fn} {
+ if {1} {
+ global parse
+ set parse(proc) $proc
+ set parse(id) $id
+ set parse(sock) $sock
+ set parse(fn) $fn
+
global icat
+ set ref [lindex $icat(cats) end]
+ global cvarname
+ set cvarname $ref
+
+ catsend::YY_FLUSH_BUFFER
+ catsend::yy_scan_string $param
+ catsend::yyparse
+ } else {
+ global icat
set cc [lindex $icat(cats) end]
switch -- [string tolower [lindex $param 0]] {
header {}
@@ -1557,3 +1573,24 @@ proc ProcessSendCatalogCmd {proc id param sock fn} {
header {ProcessSend $proc $id $sock $fn {.txt} "[CATGetHeader $cc]\n"}
}
}
+}
+
+proc CatalogSendCmdRef {ref} {
+ global icat
+ global cvarname
+
+ # backward compatibility
+ if {$ref == "catcxc"} {
+ set ref catcsc
+ }
+
+ # look for reference in current list
+ if {[lsearch $icat(cats) $ref] < 0} {
+ Error "[msgcat::mc {Unable to find catalog window}] $ref"
+ return 0
+ }
+
+ set cvarname $ref
+ return [CatalogCmdCheck]
+}
+
diff --git a/ds9/library/layout.tcl b/ds9/library/layout.tcl
index 6fe2630..9165d1b 100644
--- a/ds9/library/layout.tcl
+++ b/ds9/library/layout.tcl
@@ -87,7 +87,6 @@ proc ViewDef {} {
set view(info,keyvalue) {}
set view(info,keyword) 0
set view(info,minmax) 0
- set view(info,minmax,xy) 0
set view(info,lowhigh) 0
set view(info,bunit) 0
set view(info,wcs) 1
@@ -859,79 +858,12 @@ proc ProcessViewCmd {varname iname} {
}
proc ProcessSendViewCmd {proc id param {sock {}} {fn {}}} {
- global view
-
- switch -- [string tolower [lindex $param 0]] {
- layout {$proc $id "$view(layout)\n"}
- keyvalue {$proc $id "$view(info,keyvalue)\n"}
- info {$proc $id [ToYesNo $view(info)]}
- panner {$proc $id [ToYesNo $view(panner)]}
- magnifier {$proc $id [ToYesNo $view(magnifier)]}
- buttons {$proc $id [ToYesNo $view(buttons)]}
- colorbar {$proc $id [ToYesNo $view(colorbar)]}
- colorbarnumerics {
- # backward compatibility
- $proc $id [ToYesNo $colorbar(numerics)]
- }
- graph {
- switch -- [string tolower [lindex $param 1]] {
- horizontal {$proc $id [ToYesNo $view(graph,horz)]}
- vertical {$proc $id [ToYesNo $view(graph,vert)]}
- }
- }
- horzgraph {
- # backward compatibility
- $proc $id [ToYesNo $view(graph,horz)]
- }
- vertgraph {
- # backward compatibility
- $proc $id [ToYesNo $view(graph,vert)]
- }
+ global parse
+ set parse(proc) $proc
+ set parse(id) $id
- filename {$proc $id [ToYesNo $view(info,filename)]}
- object {$proc $id [ToYesNo $view(info,object)]}
- keyword {$proc $id [ToYesNo $view(info,keyword)]}
- minmax {$proc $id [ToYesNo $view(info,minmax)]}
- minmaxxy {$proc $id [ToYesNo $view(info,minmax,xy)]}
- lowhigh {$proc $id [ToYesNo $view(info,lowhigh)]}
- units {$proc $id [ToYesNo $view(info,bunit)]}
-
- detector {$proc $id [ToYesNo $view(info,detector)]}
- amplifier {$proc $id [ToYesNo $view(info,amplifier)]}
- physical {$proc $id [ToYesNo $view(info,physical)]}
- image {$proc $id [ToYesNo $view(info,image)]}
- wcs {$proc $id [ToYesNo $view(info,wcs)]}
- wcsa {$proc $id [ToYesNo $view(info,wcsa)]}
- wcsb {$proc $id [ToYesNo $view(info,wcsb)]}
- wcsc {$proc $id [ToYesNo $view(info,wcsc)]}
- wcsd {$proc $id [ToYesNo $view(info,wcsd)]}
- wcse {$proc $id [ToYesNo $view(info,wcse)]}
- wcsf {$proc $id [ToYesNo $view(info,wcsf)]}
- wcsg {$proc $id [ToYesNo $view(info,wcsg)]}
- wcsh {$proc $id [ToYesNo $view(info,wcsh)]}
- wcsi {$proc $id [ToYesNo $view(info,wcsi)]}
- wcsj {$proc $id [ToYesNo $view(info,wcsj)]}
- wcsk {$proc $id [ToYesNo $view(info,wcsk)]}
- wcsl {$proc $id [ToYesNo $view(info,wcsl)]}
- wcsm {$proc $id [ToYesNo $view(info,wcsm)]}
- wcsn {$proc $id [ToYesNo $view(info,wcsn)]}
- wcso {$proc $id [ToYesNo $view(info,wcso)]}
- wcsp {$proc $id [ToYesNo $view(info,wcsp)]}
- wcsq {$proc $id [ToYesNo $view(info,wcsq)]}
- wcsr {$proc $id [ToYesNo $view(info,wcsr)]}
- wcss {$proc $id [ToYesNo $view(info,wcss)]}
- wcst {$proc $id [ToYesNo $view(info,wcst)]}
- wcsu {$proc $id [ToYesNo $view(info,wcsu)]}
- wcsv {$proc $id [ToYesNo $view(info,wcsv)]}
- wcsw {$proc $id [ToYesNo $view(info,wcsw)]}
- wcsx {$proc $id [ToYesNo $view(info,wcsx)]}
- wcsy {$proc $id [ToYesNo $view(info,wcsy)]}
- wcsz {$proc $id [ToYesNo $view(info,wcsz)]}
-
- frame {$proc $id [ToYesNo $view(info,frame)]}
- default {
- # backward compatibility
- $proc $id "$view(layout)\n"
- }
- }
+ viewsend::YY_FLUSH_BUFFER
+ viewsend::yy_scan_string $param
+ viewsend::yyparse
}
+
diff --git a/ds9/library/source.tcl b/ds9/library/source.tcl
index d1b2d17..2f8ba4f 100644
--- a/ds9/library/source.tcl
+++ b/ds9/library/source.tcl
@@ -210,6 +210,8 @@ source $ds9(root)/library/blocksendparser.tcl
source $ds9(root)/library/blocksendlex.tcl
source $ds9(root)/library/catparser.tcl
source $ds9(root)/library/catlex.tcl
+source $ds9(root)/library/catsendparser.tcl
+source $ds9(root)/library/catsendlex.tcl
source $ds9(root)/library/cmapparser.tcl
source $ds9(root)/library/cmaplex.tcl
source $ds9(root)/library/colorbarparser.tcl
@@ -366,6 +368,8 @@ source $ds9(root)/library/urlfitsparser.tcl
source $ds9(root)/library/urlfitslex.tcl
source $ds9(root)/library/viewparser.tcl
source $ds9(root)/library/viewlex.tcl
+source $ds9(root)/library/viewsendparser.tcl
+source $ds9(root)/library/viewsendlex.tcl
source $ds9(root)/library/vlaparser.tcl
source $ds9(root)/library/vlalex.tcl
source $ds9(root)/library/vlssparser.tcl
diff --git a/ds9/library/util.tcl b/ds9/library/util.tcl
index de85100..e8e82fa 100644
--- a/ds9/library/util.tcl
+++ b/ds9/library/util.tcl
@@ -218,7 +218,12 @@ proc ProcessSendCmdSend {ext cmd} {
return
}
- set rr [$current(frame) $cmd]
+ ProcessSendCmdResult $ext [$current(frame) $cmd]
+}
+
+proc ProcessSendCmdResult {ext rr} {
+ global parse
+
if {$parse(sock) != {}} {
# not implemented
} elseif {$parse(fn) != {}} {
@@ -232,6 +237,7 @@ proc ProcessSendCmdSend {ext cmd} {
}
}
+# old
proc ProcessSend {proc id sock fn ext rr} {
if {$sock != {}} {
# not implemented
diff --git a/ds9/parsers/catparser.tac b/ds9/parsers/catparser.tac
index 97dd79c..b5f9f40 100644
--- a/ds9/parsers/catparser.tac
+++ b/ds9/parsers/catparser.tac
@@ -174,7 +174,7 @@ coordinate : numeric numeric {CatalogCmdCoord $1 $2 fk5}
| SEXSTR_ SEXSTR_ skyframe {CatalogCmdCoord $1 $2 $3}
;
-filter : LOAD_ STRING_ {ProcessCmdCVAR filter $2 CATTable}
+filter : LOAD_ STRING_ {CatalogCmdFilterLoad $2}
| STRING_ {ProcessCmdCVAR filter $1 CATTable}
;
diff --git a/ds9/parsers/catsendlex.fcl b/ds9/parsers/catsendlex.fcl
new file mode 100644
index 0000000..3f1c5e5
--- /dev/null
+++ b/ds9/parsers/catsendlex.fcl
@@ -0,0 +1,13 @@
+#tab catsendparser.tab.tcl
+
+%{
+%}
+
+#include defs.fin
+
+%%
+
+header {return $HEADER_}
+
+#include string.fin
+%%
diff --git a/ds9/parsers/catsendparser.tac b/ds9/parsers/catsendparser.tac
new file mode 100644
index 0000000..6c36111
--- /dev/null
+++ b/ds9/parsers/catsendparser.tac
@@ -0,0 +1,28 @@
+%{
+%}
+
+#include string.tin
+
+%token HEADER_
+
+%start catsend
+
+%%
+
+catsend : {if {![CatalogCmdCheck]} {cat::YYABORT}} catsendCmd
+ | STRING_ {if {![CatalogSendCmdRef cat${1}]} {plot::YYABORT}} catsendCmd
+ ;
+
+catsendCmd : {ProcessSendCmdGet icat cats}
+ | HEADER_ {global cvarname; ProcessSendCmdResult {.txt} [CATGetHeader $cvarname]}
+ ;
+
+%%
+
+proc catsend::yyerror {msg} {
+ variable yycnt
+ variable yy_current_buffer
+ variable index_
+
+ ParserError $msg $yycnt $yy_current_buffer $index_
+}
diff --git a/ds9/parsers/viewlex.fcl b/ds9/parsers/viewlex.fcl
index 1fe719c..f980b7d 100644
--- a/ds9/parsers/viewlex.fcl
+++ b/ds9/parsers/viewlex.fcl
@@ -10,7 +10,7 @@
blue {return $BLUE_}
buttons {return $BUTTONS_}
colorbar {return $COLORBAR_}
-colorbarnumerics {return $COLORBARNUMERICS_}
+colorbarnumerics {return $COLORBARNUMERICS_}
filename {return $FILENAME_}
frame {return $FRAME_}
graph {return $GRAPH_}
diff --git a/ds9/parsers/viewparser.tac b/ds9/parsers/viewparser.tac
index 283b954..f7bbfcc 100644
--- a/ds9/parsers/viewparser.tac
+++ b/ds9/parsers/viewparser.tac
@@ -64,7 +64,7 @@ view : layout
| KEYWORD_ yesno {ProcessCmdSet view info,keyword $2 UpdateView}
| MINMAX_ yesno {ProcessCmdSet view info,minmax $2 UpdateView}
| LOWHIGH_ yesno {ProcessCmdSet view info,lowhigh $2 UpdateView}
- | UNITS_ yesno {ProcessCmdSet view info,units $2 UpdateView}
+ | UNITS_ yesno {ProcessCmdSet view info,bunit $2 UpdateView}
| coordsys yesno {ProcessCmdSet view info,$1 $2 UpdateView}
| wcssys yesno {ProcessCmdSet view info,$1 $2 UpdateView}
| FRAME_ yesno {ProcessCmdSet view info,frame $2 UpdateView}
diff --git a/ds9/parsers/viewsendlex.fcl b/ds9/parsers/viewsendlex.fcl
new file mode 100644
index 0000000..9cd0469
--- /dev/null
+++ b/ds9/parsers/viewsendlex.fcl
@@ -0,0 +1,39 @@
+#tab viewsendparser.tab.tcl
+
+%{
+%}
+
+#include defs.fin
+
+%%
+
+blue {return $BLUE_}
+buttons {return $BUTTONS_}
+colorbar {return $COLORBAR_}
+colorbarnumerics {return $COLORBARNUMERICS_}
+filename {return $FILENAME_}
+frame {return $FRAME_}
+graph {return $GRAPH_}
+green {return $GREEN_}
+horz {return $HORIZONTAL_}
+horizontal {return $HORIZONTAL_}
+horzgraph {return $HORZGRAPH_}
+info {return $INFO_}
+keyvalue {return $KEYVALUE_}
+keyword {return $KEYWORD_}
+layout {return $LAYOUT_}
+lowhigh {return $LOWHIGH_}
+magnifier {return $MAGNIFIER_}
+minmax {return $MINMAX_}
+object {return $OBJECT_}
+panner {return $PANNER_}
+red {return $RED_}
+units {return $UNITS_}
+vert {return $VERTICAL_}
+vertical {return $VERTICAL_}
+vertgraph {return $VERTGRAPH_}
+
+#include coords.fin
+#include string.fin
+
+%%
diff --git a/ds9/parsers/viewsendparser.tac b/ds9/parsers/viewsendparser.tac
new file mode 100644
index 0000000..e39b556
--- /dev/null
+++ b/ds9/parsers/viewsendparser.tac
@@ -0,0 +1,76 @@
+%{
+%}
+
+#include coords.tin
+#include string.tin
+
+%start viewsend
+
+%token BUTTONS_
+%token COLORBAR_
+%token COLORBARNUMERICS_
+%token FILENAME_
+%token FRAME_
+%token GRAPH_
+%token HORIZONTAL_
+%token HORZGRAPH_
+%token INFO_
+%token KEYWORD_
+%token KEYVALUE_
+%token LAYOUT_
+%token LOWHIGH_
+%token MAGNIFIER_
+%token MINMAX_
+%token OBJECT_
+%token PANNER_
+%token UNITS_
+%token VERTGRAPH_
+%token VERTICAL_
+
+%%
+
+#include coords.trl
+
+viewsend :
+ | LAYOUT_ {ProcessSendCmdGet view layout}
+ | KEYVALUE_ {ProcessSendCmdGet view info,keyvalue}
+ | INFO_ {ProcessSendCmdYesNo view info}
+ | PANNER_ {ProcessSendCmdYesNo view panner}
+ | MAGNIFIER_ {ProcessSendCmdYesNo view magnifier}
+ | BUTTONS_ {ProcessSendCmdYesNo view buttons}
+ | COLORBAR_ {ProcessSendCmdYesNo view colorbar}
+# backward compatibility
+ | COLORBARNUMERICS_ {ProcessSendCmdYesNo colorbar numerics}
+ | GRAPH_ graph
+# backward compatibility
+ | HORZGRAPH_ {ProcessSendCmdYesNo view graph,horz}
+# backward compatibility
+ | VERTGRAPH_ {ProcessSendCmdYesNo view graph,graph}
+
+ | FILENAME_ {ProcessSendCmdYesNo view info,filename}
+ | OBJECT_ {ProcessSendCmdYesNo view info,object}
+ | KEYWORD_ {ProcessSendCmdYesNo view info,keyword}
+ | MINMAX_ {ProcessSendCmdYesNo view info,minmax}
+ | LOWHIGH_ {ProcessSendCmdYesNo view info,lowhigh}
+ | UNITS_ {ProcessSendCmdYesNo view info,bunit}
+
+ | coordsys {ProcessSendCmdYesNo view info,$1}
+ | wcssys {ProcessSendCmdYesNo view info,$1}
+
+ | FRAME_ {ProcessSendCmdYesNo view info,frame}
+ ;
+
+graph :
+ | HORIZONTAL_ {ProcessSendCmdYesNo view graph,horz}
+ | VERTICAL_ {ProcessSendCmdYesNo view graph,vert}
+ ;
+
+%%
+
+proc viewsend::yyerror {msg} {
+ variable yycnt
+ variable yy_current_buffer
+ variable index_
+
+ ParserError $msg $yycnt $yy_current_buffer $index_
+}