awips2/cave/com.raytheon.viz.avnconfig/localization/aviation/python/AvnClimate.py
Max Schenkelberg 6f60751ec6 Issue #2033 moved avnfps and text workstation files into respective plugins.
Change-Id: If95cb839ad81ca2a842ff7f6926847ac3928d8f2

Former-commit-id: 77e1a4d8f5237e5fae930c1e00589c752f8b3738
2013-08-15 12:21:43 -05:00

251 lines
8.8 KiB
Python

##
# This software was developed and / or modified by Raytheon Company,
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
#
# U.S. EXPORT CONTROLLED TECHNICAL DATA
# This software product contains export-restricted data whose
# export/transfer/disclosure is restricted by U.S. law. Dissemination
# to non-U.S. persons whether in the United States or abroad requires
# an export license or other authorization.
#
# Contractor Name: Raytheon Company
# Contractor Address: 6825 Pine Street, Suite 340
# Mail Stop B8
# Omaha, NE 68106
# 402.291.0100
#
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
# further licensing information.
##
#
# Name:
# AvnClimate.py
# GFS1-NHD:A7890.0000-SCRIPT;1.20
#
# Status:
# DELIVERED
#
# History:
# Revision 1.20 (DELIVERED)
# Created: 19-NOV-2008 10:29:03 OBERFIEL
# Fixed spelling error.
#
# Revision 1.19 (DELIVERED)
# Created: 28-NOV-2007 13:01:54 OBERFIEL
# Remove references to obsolete climate GUI and the import of
# the climmodule.so shared library.
#
# Revision 1.18 (DELIVERED)
# Created: 21-MAR-2007 09:54:48 OBERFIEL
# For AvnClimate.py: Updated the Help text; MetarMonitorP.py:
# fix potential permission problem;
# WindRose.py: Added Auto Update feature, by default always
# on.
#
# Revision 1.17 (REVIEW)
# Created: 20-MAR-2007 13:36:55 OBERFIEL
# Updated text input fields and printer dialogs to be
# consistent. Frame tag removed.
#
# Revision 1.16 (DELIVERED)
# Created: 07-DEC-2006 14:25:55 BLI
# Commented out unused code
#
# Revision 1.15 (APPROVED)
# Created: 06-DEC-2006 14:10:39 BLI
# Modified to make xmit configurable for each user
#
# Revision 1.14 (APPROVED)
# Created: 17-NOV-2006 11:02:12 BLI
# Removed the 'Old' climate gui
#
# Revision 1.13 (DELIVERED)
# Created: 29-JUN-2006 06:36:01 OBERFIEL
# Updated to remove references to HTML and other obsolete
# stuff
#
# Revision 1.12 (DELIVERED)
# Created: 08-JUN-2006 11:37:40 OBERFIEL
# Remove HTML option from Help pulldowns
#
# Revision 1.11 (DELIVERED)
# Created: 18-MAY-2006 10:32:32 TROJAN
# SPR7150: port to HDF5 data format
#
# Revision 1.10 (DELIVERED)
# Created: 24-MAR-2006 17:45:42 TROJAN
# spr 7106 Pmw code does not forward python exceptions to
# AvnFPS _Logger
#
# Revision 1.9 (DELIVERED)
# Created: 24-MAR-2006 09:56:15 TROJAN
# spr 7103: redirect all error messages to a log file
#
# Revision 1.8 (DELIVERED)
# Created: 16-FEB-2006 14:17:30 TROJAN
# fixed help, removed unnecessary imports
#
# Revision 1.7 (APPROVED)
# Created: 15-FEB-2006 14:34:40 TROJAN
# fixes transient dialog behavior - spr 7091
#
# Revision 1.6 (APPROVED)
# Created: 13-FEB-2006 10:35:21 TROJAN
# added buttons for the 3 new climate programs
#
# Revision 1.5 (DELIVERED)
# Created: 06-JUL-2005 20:50:37 TROJAN
# spr 6910
#
# Revision 1.4 (DELIVERED)
# Created: 07-MAY-2005 11:29:35 OBERFIEL
# Added Item Header Block
#
# Revision 1.3 (DELIVERED)
# Created: 30-SEP-2004 20:38:46 TROJAN
# spr 6370
#
# Revision 1.2 (APPROVED)
# Created: 12-JUL-2004 12:12:59 OBERFIEL
# Modified startup interface
#
# Revision 1.1 (APPROVED)
# Created: 09-JUL-2004 19:52:49 OBERFIEL
# date and time created -2147483647/-2147483648/-2147481748
# -2147483648:-2147483648:-2147483648 by oberfiel
#
# Change Document History:
# 1:
# Change Document: GFS1-NHD_SPR_7407
# Action Date: 03-JAN-2009 09:26:51
# Relationship Type: In Response to
# Status: TEST
# Title: AvnFPS: Allow WFOs to update HDF5 climate files
#
#
import atexit, logging, os, signal
from Tkinter import *
import Pmw
from Balloon import Balloon
import AppShell, Avn, AvnParser, Busy, DataRequestServ, ErrorRedirect, Globals
from HelpDialog import HelpDialog
from Pyro.errors import *
_Title = 'Aviation Forecast Preparation System Climate Display'
_Help = {
'title': _Title,
'content': """
This master menu GUI is used to launch applications that display NCDC
climatological data for observation sites in a variety of formats.
Button description:
METARs: use to display reconstructed METARs for a user-defined
span of days
Wind Rose: displays Wind Rose for selected dates, times and flight
category conditions
CigVis Dist: displays ceiling, visibility and flight category
distributions by month, hour and wind direction
CigVis Trend: displays 3-12 hour ceiling, visibility and flight
category forecast based on initial conditions
"""
}
AvnStart = os.path.join(os.environ['TOP_DIR'], 'bin', 'avnstart.sh')
_Logger = logging.getLogger(__name__)
###############################################################################
def _exitfun():
pass
##############################################################################
class AvnClimate(AppShell.AppShell):
appname = AppShell.AppShell.appname + ' Climate Menu'
resizewidth = 'false'
resizeheight = 'false'
def __getXResources(self):
# Reads application resources file
#The following code was commented out because Globals.Forecaster
#was never passed into this class
#id_ = AvnParser.getForecasters().get(Globals.Forecaster, '')['id']
#if id_:
#fname = os.path.join('etc', 'app-resources', 'X.'+id_)
#if os.path.isfile(fname):
#self.option_readfile(fname)
#return
fname = os.path.join('etc', 'app-resources', 'X')
if os.path.isfile(fname):
self.option_readfile(fname)
else:
msg = 'Cannot access default resources file,\n' + \
'using build-in values'
_Logger.info(msg)
Busy.showwarning(msg, self.root)
def initializeTk(self):
pass
def appInit(self, **kw):
self.__getXResources()
Pmw.Color.setscheme(self.root,
background=self.option_get('background', ''))
self.root.wm_iconbitmap(Avn.WatchBitmap)
ErrorRedirect.fixlogging(_Logger, self.root)
def appFinish(self):
try:
Globals.DRC = DataRequestServ.Client()
except PyroError:
_Logger.exception('Cannot access data server')
raise SystemExit
atexit.register(_exitfun)
def createMenuBar(self):
self.menubar.addmenuitem('Help', 'command',
label='About...', command=self.showAbout)
self.menubar.addmenuitem('Help', 'command',
label='Usage ...', command=self.showHelp)
# HTML documentation no longer shipped with software -- mgo
# self.menubar.addmenuitem('Help', 'command',
# label='HTML...', command=self.showHTML)
self.menubar.addmenuitem('File', 'command',
label = 'Quit', command=self.exit)
def createInterface(self):
NewItems = [ \
('METARs', 'METAR display', \
Avn.curry(self.runProg, 'metars')), \
('Wind Rose', 'Wind Rose', \
Avn.curry(self.runProg, 'wrose')), \
('CigVis Dist', 'Ceiling/Visibility Distribution', \
Avn.curry(self.runProg, 'cvdist')), \
('CigVis Trend', 'Ceiling/Visibility Forecast', \
Avn.curry(self.runProg, 'cvtrend')),
]
self.titlelabel = Label(self.interior(), text=_Title)
grp = Pmw.Group(self.interior(),tag_pyclass=None)
bbox = Pmw.ButtonBox(grp.interior(), orient='vertical')
for item in NewItems:
btn = bbox.add(item[0], command=item[2])
Balloon().bind(btn, item[1])
bbox.pack(side='top', expand='yes', fill='x', padx=5, pady=2)
grp.pack(side='top', expand='yes', fill='x', padx=5, pady=2)
def runProg(self, prog):
os.system('%s %s &' % (AvnStart, prog))
def showHelp(self):
HelpDialog().display(_Help)
def run(self):
# overrides Tkinter method
# shut down forecaster selection menu
try:
os.kill(os.getppid(), signal.SIGUSR1)
except OSError:
pass
AppShell.AppShell.run(self)