[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