awips2/cave/com.raytheon.viz.avnconfig/localization/aviation/python/AvnSetup.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

302 lines
9.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:
# AvnSetup.py
# GFS1-NHD:A3643.0000-SCRIPT;23
#
# Status:
# DELIVERED
#
# History:
# Revision 23 (DELIVERED)
# Created: 06-NOV-2008 10:07:36 GILMOREDM
# Made small changes
#
# Revision 22 (REVIEW)
# Created: 16-OCT-2008 15:26:30 GILMOREDM
# Updates to the new Climate Data File GUI
#
# Revision 21 (DELIVERED)
# Created: 29-SEP-2008 16:00:59 OBERFIEL
# Updates to reflect addition of new functionality
#
# Revision 20 (REVIEW)
# Created: 02-SEP-2008 12:53:03 GILMOREDM
# Added functionality to open Climate Data GUI
#
# Revision 19 (DELIVERED)
# Created: 09-JUL-2007 14:46:48 OBERFIEL
# Commented out instructions to create the TWB route and
# product buttons.
#
# Revision 18 (DELIVERED)
# Created: 29-JUN-2006 06:36:08 OBERFIEL
# Updated to remove references to HTML and other obsolete
# stuff
#
# Revision 17 (DELIVERED)
# Created: 08-JUN-2006 11:47:21 OBERFIEL
# Remove reference to Informix
#
# Revision 16 (APPROVED)
# Created: 08-JUN-2006 11:37:50 OBERFIEL
# Remove HTML option from Help pulldowns
#
# Revision 15 (DELIVERED)
# Created: 24-MAR-2006 17:45:43 TROJAN
# spr 7106 Pmw code does not forward python exceptions to
# AvnFPS _Logger
#
# Revision 14 (DELIVERED)
# Created: 24-MAR-2006 09:48:22 TROJAN
# spr 7103: redirect all error messages to a log file
#
# Revision 13 (DELIVERED)
# Created: 15-FEB-2006 14:34:41 TROJAN
# fixes transient dialog behavior - spr 7091
#
# Revision 12 (DELIVERED)
# Created: 27-JAN-2006 11:28:18 PCMS
# test
#
# Revision 11 (DELIVERED)
# Created: 06-JUL-2005 20:50:37 TROJAN
# spr 6910
#
# Revision 10 (DELIVERED)
# Created: 07-MAY-2005 11:30:27 OBERFIEL
# Added Item Header Block
#
# Revision 9 (DELIVERED)
# Created: 04-APR-2005 14:16:29 TROJAN
# spr 6777
#
# Revision 8 (DELIVERED)
# Created: 24-JAN-2005 15:51:12 TROJAN
# spr 6259
#
# Revision 7 (APPROVED)
# Created: 16-NOV-2004 20:13:20 PCMS
# Restoring history
#
# Revision 6 (DELIVERED)
# Created: 05-NOV-2003 19:05:22 OBERFIEL
# Initial version for 2.0
#
# Revision 5 (DELIVERED)
# Created: 11-JUN-2002 18:14:37 PCMS
# Fixed Forecaster Editor in Setup gui
#
# Revision 4 (DELIVERED)
# Created: 21-MAY-2002 19:31:34 PCMS
# Fixing launch problem related to appresources variable.
#
# Revision 3 (DELIVERED)
# Created: 30-OCT-2001 18:18:41 PCMS
# Updated HTML help display
#
# Revision 2 (DELIVERED)
# Created: 02-OCT-2001 17:48:56 PCMS
# Updating for gui changes
#
# Revision 1 (DELIVERED)
# Created: 20-AUG-2001 20:29:19 MOELLER
# Initial version
#
# 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 logging, os
from Tkinter import *
import Pmw
from Balloon import Balloon
from HelpDialog import HelpDialog
import AppShell, Avn, AvnParser, ErrorRedirect, Globals
import EditDialog, RuleEditor, SiteInfoEditor, RouteInfoEditor
import ProductDialog, TriggerEditor, ClimateDataDialog
Python = os.environ['PYTHON']
TopDir = os.environ['TOP_DIR']
_Help = {
'title': 'AvnFPS Setup Help',
'content': """
This application is used to configure AvnFPS.
Button description:
Text Editor: use to modify forecaster list and default resource
file.
Monitoring rules: use to edit watch rules for TAF monitoring.
TAF Site Info: use to create TAF definition files
TAF Products: use to create lists of TAFs to load into forecast
editor
Triggers: use to create and install Postgres trigger file.
Climate Data: use to create and update HDF5 climate files.
"""
}
_Logger = logging.getLogger(__name__)
##############################################################################
class AvnSetup(AppShell.AppShell):
appname = Avn.Name + ' Setup'
resizewidth = False
resizeheight = False
def __init__(self, **kw):
guicfg = AvnParser.getGuiCfg()
if not guicfg:
raise SystemExit
Globals.Colors = guicfg['colors']
AppShell.AppShell.__init__(self, **kw)
ErrorRedirect.fixlogging(_Logger, self.interior())
def __createRuleEditor(self):
self.ruleeditor = RuleEditor.Editor(self._hull)
self.ruleeditor.setGeometry()
def __createSiteInfoEditor(self):
self.siteeditor = SiteInfoEditor.Editor(self._hull)
self.siteeditor.setGeometry()
def __createRouteInfoEditor(self):
self.routeeditor = RouteInfoEditor.Editor(self._hull)
self.routeeditor.setGeometry()
def __createTAFProductEditor(self):
self.tafeditor = ProductDialog.TafEditor(self._hull)
self.tafeditor.setGeometry()
def __createTWBProductEditor(self):
self.twbeditor = ProductDialog.TwbEditor(self._hull)
self.twbeditor.setGeometry()
def __createTriggerEditor(self):
self.trigeditor = TriggerEditor.Editor(self._hull)
self.trigeditor.setGeometry()
def __createClimateDataEditor(self):
os.spawnlp(os.P_NOWAIT,Python, Python,
os.path.join(TopDir, 'py', 'avnclimdata.py'), '')
def initializeTk(self):
import XDefaults
for item in XDefaults.Defaults:
self.root.option_add(item[0], item[1], 30)
def appInit(self, **kw):
try:
self.option_readfile(os.path.join('etc', 'app-resources', 'X'))
Pmw.Color.setscheme(self.root,
background=self.option_get('background', ''))
except Exception:
msg = 'Cannot access default resources file, ' + \
'using build-in values'
_Logger.info(msg)
def createMenuBar(self):
self.menubar.addmenuitem('Help', 'command',
label='About...', command=self.showAbout)
self.menubar.addmenuitem('Help', 'command',
label='Usage ...', command=self.showHelp)
self.menubar.addmenuitem('File', 'command',
label = 'Quit', command=self.exit)
def createInterface(self):
bbox = Pmw.ButtonBox(self.interior(),
labelpos='n',
label_text='AvnFPS Setup',
frame_borderwidth=2,
frame_relief='ridge',
orient='vertical',
)
btn = bbox.add('Text Editor', command=self.editText)
Balloon().bind(btn, 'Text editor')
btn = bbox.add('Monitoring Rules', command=self.editRules)
Balloon().bind(btn, 'Monitor criteria editor')
btn = bbox.add('TAF Site Info', command=self.editSiteInfo)
Balloon().bind(btn, 'TAF site info editor')
btn = bbox.add('TAF Products', command=self.editTafProduct)
Balloon().bind(btn, 'TAF product editor')
btn = bbox.add('Triggers', command=self.makeTriggers)
Balloon().bind(btn, 'Creates trigger template file')
btn = bbox.add('Climate Data', command=self.editClimateData)
Balloon().bind(btn, 'Update or create new HDF5 climate files')
bbox.pack(expand='yes', fill='both')
def editText(self):
if not hasattr(self, 'texteditor'):
self.texteditor = EditDialog.Editor(self.interior())
self.texteditor.setworkdir('etc')
self.texteditor.display()
def editRules(self):
if not hasattr(self, 'ruleeditor'):
self.__createRuleEditor()
self.ruleeditor.load()
self.ruleeditor.display()
def editSiteInfo(self):
if not hasattr(self, 'siteeditor'):
self.__createSiteInfoEditor()
self.siteeditor.display()
def editRouteInfo(self):
if not hasattr(self, 'routeeditor'):
self.__createRouteInfoEditor()
self.routeeditor.display()
def editTafProduct(self):
if not hasattr(self, 'tafeditor'):
self.__createTAFProductEditor()
self.tafeditor.listProducts()
self.tafeditor.display()
def editTwbProduct(self):
if not hasattr(self, 'twbeditor'):
self.__createTWBProductEditor()
self.twbeditor.listProducts()
self.twbeditor.display()
def makeTriggers(self):
if not hasattr(self, 'trigeditor'):
self.__createTriggerEditor()
self.trigeditor.listTriggers()
self.trigeditor.display()
def editClimateData(self):
self.__createClimateDataEditor()
def showHelp(self):
HelpDialog().display(_Help)