[Yt-svn] yt-commit r1702 - trunk/yt/extensions/image_panner
mturk at wrangler.dreamhost.com
mturk at wrangler.dreamhost.com
Sun Apr 25 21:53:33 PDT 2010
Author: mturk
Date: Sun Apr 25 21:53:32 2010
New Revision: 1702
URL: http://yt.enzotools.org/changeset/1702
Log:
Adding OutputSelector to the pan-n-scan widget. This is the code I use to load
up multiple projections and display them in a pan-n-scan interface:
import yt.extensions.image_panner as ip
import yt.extensions.image_panner.pan_and_scan_widget as pns
from yt.mods import *
outputs = ["output_%04i" % i for i in range(5,14)]
os = pns.OutputSelector(outputs = outputs)
os.configure_traits()
Modified:
trunk/yt/extensions/image_panner/pan_and_scan_widget.py
Modified: trunk/yt/extensions/image_panner/pan_and_scan_widget.py
==============================================================================
--- trunk/yt/extensions/image_panner/pan_and_scan_widget.py (original)
+++ trunk/yt/extensions/image_panner/pan_and_scan_widget.py Sun Apr 25 21:53:32 2010
@@ -28,8 +28,10 @@
# Enthought library imports
from enthought.enable.api import Component, ComponentEditor, Window
from enthought.traits.api import HasTraits, Instance, Button, Any, Callable, \
- on_trait_change, Bool, DelegatesTo, List, Enum
-from enthought.traits.ui.api import Item, Group, View
+ on_trait_change, Bool, DelegatesTo, List, Enum, Int, Property, Str, \
+ cached_property
+from enthought.traits.ui.api import \
+ Group, View, Item, VGroup, InstanceEditor
# Chaco imports
from enthought.chaco.api import ArrayPlotData, jet, Plot, HPlotContainer, \
@@ -249,3 +251,47 @@
self.full_container.add(self.colorbar)
self.full_container.add(self.container)
self.container.add(self.vm_plot.plot)
+
+class OutputSelector(HasTraits):
+ outputs = List
+ main_plot = Instance(VariableMeshPannerView)
+ main_panner = Property(depends_on = "pf")
+ weight_field = Str("Density")
+
+ pf = Any
+ source = Any
+ axis = Int(0)
+
+ traits_view = View(VGroup(
+ Item('output'),
+ Item('main_plot'),
+ )
+ )
+
+ def __init__(self, **kwargs):
+ super(OutputSelector, self).__init__(**kwargs)
+ self.add_trait("output", Enum(*self.outputs))
+ self.output = self.outputs[-1]
+ self.main_plot
+
+ def _output_default(self):
+ return self.outputs[0]
+
+ def _output_changed(self, old, new):
+ # We get a string here
+ import yt.mods
+ self.pf = yt.mods.load(new, data_style="enzo_packed_3d")
+ self.source = yt.mods.projload(self.pf, self.axis, "Density")
+ self.main_panner.field = self.main_plot.vm_plot.field
+ self.main_plot.panner = self.main_plot.vm_plot.panner = \
+ self.main_plot.vm_plot.helper.panner = self.main_panner
+ self.main_plot.vm_plot.field = self.main_panner.field
+
+ def _main_plot_default(self):
+ vmpv = VariableMeshPannerView(panner = self.main_panner)
+ vmpv.vm_plot.helper.run_callbacks = True
+ return vmpv
+
+ @cached_property
+ def _get_main_panner(self):
+ return self.pf.h.image_panner(self.source, (512, 512), "Density")
More information about the yt-svn
mailing list