Source code for wwt_data_formats.place

# -*- mode: python; coding: utf-8 -*-
# Copyright 2019-2020 the .NET Foundation
# Licensed under the MIT License.

"""A place that a WWT user can visit.

"""
from __future__ import absolute_import, division, print_function

__all__ = '''
Place
'''.split()

from argparse import Namespace
from traitlets import Float, Instance, Int, Unicode, UseEnum

from . import LockedXmlTraits, XmlSer
from .abcs import UrlContainer
from .enums import Classification, Constellation, DataSetType
from .imageset import ImageSet

[docs]class Place(LockedXmlTraits, UrlContainer): """A place that can be visited.""" data_set_type = UseEnum( DataSetType, default_value = DataSetType.EARTH ).tag(xml=XmlSer.attr('DataSetType')) name = Unicode('').tag(xml=XmlSer.attr('Name')) ra_hr = Float(0.0).tag(xml=XmlSer.attr('RA')) dec_deg = Float(0.0).tag(xml=XmlSer.attr('Dec')) latitude = Float(0.0).tag(xml=XmlSer.attr('Lat')) longitude = Float(0.0).tag(xml=XmlSer.attr('Lng')) constellation = UseEnum( Constellation, default_value = Constellation.UNSPECIFIED ).tag(xml=XmlSer.attr('Constellation')) classification = UseEnum( Classification, default_value = Classification.UNSPECIFIED ).tag(xml=XmlSer.attr('Classification')) magnitude = Float(0.0).tag(xml=XmlSer.attr('Magnitude')) distance = Float(0.0).tag(xml=XmlSer.attr('Distance')) angular_size = Float(0.0).tag(xml=XmlSer.attr('AngularSize')) zoom_level = Float(0.0).tag(xml=XmlSer.attr('ZoomLevel')) rotation_deg = Float(0.0).tag(xml=XmlSer.attr('Rotation')) angle = Float(0.0).tag(xml=XmlSer.attr('Angle')) opacity = Float(100.0).tag(xml=XmlSer.attr('Opacity')) dome_alt = Float(0.0).tag(xml=XmlSer.attr('DomeAlt')) dome_az = Float(0.0).tag(xml=XmlSer.attr('DomeAz')) background_image_set = Instance(ImageSet, allow_none=True).tag(xml=XmlSer.wrapped_inner('BackgroundImageSet')) foreground_image_set = Instance(ImageSet, allow_none=True).tag(xml=XmlSer.wrapped_inner('ForegroundImageSet')) image_set = Instance(ImageSet, allow_none=True).tag(xml=XmlSer.inner('ImageSet')) thumbnail = Unicode('').tag(xml=XmlSer.attr('Thumbnail')) msr_community_id = Int(0).tag(xml=XmlSer.attr('MSRCommunityId')) """The ID number of the WWT Community that this content came from.""" msr_component_id = Int(0).tag(xml=XmlSer.attr('MSRComponentId')) """The ID number of this content item on the WWT Communities system.""" permission = Int(0).tag(xml=XmlSer.attr('Permission')) "TBD." xmeta = Instance( Namespace, args = (), help = 'XML metadata - a namespace object for attaching arbitrary text to serialize', ).tag(xml=XmlSer.ns_to_attr('X')) def _tag_name(self): return 'Place' def mutate_urls(self, mutator): if self.thumbnail: self.thumbnail = mutator(self.thumbnail) if self.background_image_set: self.background_image_set.mutate_urls(mutator) if self.foreground_image_set: self.foreground_image_set.mutate_urls(mutator) if self.image_set: self.image_set.mutate_urls(mutator)
[docs] def as_imageset(self): """Return an ImageSet for this place if one is defined. Returns ------- Either :class:`wwt_data_formats.imageset.ImageSet` or None. Notes ----- If the :attr:`foreground_image_set` of this :class:`Place` is not None, it is returned. Otherwise, if its :attr:`image_set` is not None, that is returned. Otherwise, None is returned. """ if self.foreground_image_set is not None: return self.foreground_image_set return self.image_set