Source code for stginga.gingawrapper
"""Wrapper script to run Ginga optimized for STScI data."""
# STDLIB
import sys
# GINGA
from ginga.rv import main as gmain
# Suppress logging "no handlers" message from Ginga
import logging
logging.raiseExceptions = False
__all__ = ['run_stginga']
[docs]
def run_stginga(sys_argv):
"""Run this from command line.
This does the following:
* Set up custom STScI plugins.
* Automatically starts necessary core Ginga global plugins.
* Pass command line arguments directly into Ginga.
.. warning::
If the same plugin that is loaded here is also loaded
via ``~/.ginga/ginga_config.py`` or command line,
you might see duplicates!
"""
from .plugin_info import _get_stginga_plugins
# Remove some Ginga default plugins.
# Use this if we have custom plugins that replaces them.
# Note: Unable to get this to work from within ginga_config.py
# Example:
# glb_plg_to_remove = ['WBrowser', 'RC', 'SAMP', 'IRAF']
plg_to_remove = []
_remove_plugins(plg_to_remove, gmain.plugins)
# Add custom plugins.
# If we use this, we do not have to use ginga_config.py
stglobal_plugins, stlocal_plugins = _get_stginga_plugins()
gmain.plugins += stglobal_plugins
gmain.plugins += stlocal_plugins
# Enforce Qt (--toolkit or -t) -- DISABLED
# new_argv = ['--toolkit=qt' if 'toolkit' in s else s for s in sys_argv]
# if '-t' in new_argv:
# new_argv[new_argv.index('-t') + 1] = 'qt'
# Auto start core global plugins
for gplgname in ('ChangeHistory', ):
gplg = _locate_plugin(gmain.plugins, gplgname)
gplg.start = True
# Start Ginga
gmain.reference_viewer(sys_argv)
def _locate_plugin(plist, name):
"""Locate a default global plugin for Ginga."""
result = None
for plg in plist:
if plg.module == name:
result = plg
break
return result
def _remove_plugins(rmlist, plist):
"""Remove default global or local plugin(s) from Ginga."""
for plgname in rmlist:
plg = _locate_plugin(plist, plgname)
plist.remove(plg)
# This is used by entry point.
def _main():
"""Run from command line."""
run_stginga(sys.argv)
if __name__ == '__main__':
_main()