]> git.gag.com Git - debian/gnuradio/commitdiff
fftsink: y_per_div issue fixed
authorjblum <jblum@221aa14e-8319-0410-a670-987f0aec2ac5>
Thu, 12 Jun 2008 21:33:40 +0000 (21:33 +0000)
committerjblum <jblum@221aa14e-8319-0410-a670-987f0aec2ac5>
Thu, 12 Jun 2008 21:33:40 +0000 (21:33 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@8585 221aa14e-8319-0410-a670-987f0aec2ac5

gr-wxgui/src/python/fftsink2.py
gr-wxgui/src/python/plot.py

index 8c8d2d8f85c493ce6f13d2904168f4ce73f9cf21..42309767411622a02366767087c1472ceec176d3 100755 (executable)
@@ -310,7 +310,6 @@ class fft_window (wx.Panel):
         main_box.Add (self.control_panel, 0, wx.EXPAND)
         self.SetSizerAndFit(main_box)
         
-        self.y_range = None
         self.peak_hold = False
         self.peak_vals = None
         
@@ -395,19 +394,16 @@ class fft_window (wx.Panel):
         graphics = plot.PlotGraphics (lines,
                                       title=self.fftsink.title,
                                       xLabel = self._units, yLabel = "dB")
-        self.x_range = x_vals[0], x_vals[-1]
-        self.plot.Draw (graphics, xAxis=self.x_range, yAxis=self.y_range)
-        self.update_y_range ()
+        x_range = x_vals[0], x_vals[-1]
+        ymax = self.fftsink.ref_level
+        ymin = self.fftsink.ref_level - self.fftsink.y_per_div * self.fftsink.y_divs
+        y_range = ymin, ymax
+        self.plot.Draw (graphics, xAxis=x_range, yAxis=y_range, step=self.fftsink.y_per_div)        
 
     def set_peak_hold(self, enable):
         self.peak_hold = enable
         self.peak_vals = None
 
-    def update_y_range (self):
-        ymax = self.fftsink.ref_level
-        ymin = self.fftsink.ref_level - self.fftsink.y_per_div * self.fftsink.y_divs
-        self.y_range = self.plot._axisInterval ('min', ymin, ymax)
-
     def on_average(self, evt):
         # print "on_average"
         self.fftsink.set_average(evt.IsChecked())
index 837ff947ba852be6dfb5cef3fa54189471ba1260..c104b0ea5105ffc5094d906a32528a01d9bd45d6 100644 (file)
@@ -767,7 +767,7 @@ class PlotCanvas(wx.Window):
     def GetXUseScopeTicks(self):
         return self._xUseScopeTicks
 
-    def Draw(self, graphics, xAxis = None, yAxis = None, dc = None):
+    def Draw(self, graphics, xAxis = None, yAxis = None, dc = None, step=None):
         """Draw objects in graphics with specified x and y axis.
         graphics- instance of PlotGraphics with list of PolyXXX objects
         xAxis - tuple with (min, max) axis range to view
@@ -829,7 +829,7 @@ class PlotCanvas(wx.Window):
             xticks = None
             xTextExtent= (0,0) # No text for ticks
         if self._ySpec is not 'none':
-            yticks = self._ticks(yAxis[0], yAxis[1])
+            yticks = self._ticks(yAxis[0], yAxis[1], step)
             yTextExtentBottom= dc.GetTextExtent(yticks[0][1])
             yTextExtentTop   = dc.GetTextExtent(yticks[-1][1])
             yTextExtent= (max(yTextExtentBottom[0],yTextExtentTop[0]),
@@ -1277,7 +1277,7 @@ class PlotCanvas(wx.Window):
                                     pt[1]-0.5*h)
                 text = 0    # axis values not drawn on right side
 
-    def _ticks(self, lower, upper):
+    def _ticks(self, lower, upper, step=None):
         ideal = (upper-lower)/7.
         log = _numpy.log10(ideal)
         power = _numpy.floor(log)
@@ -1298,9 +1298,12 @@ class PlotCanvas(wx.Window):
         else:
             digits = -int(power)
             format = '%'+`digits+2`+'.'+`digits`+'f'
+        #force grid when step is not None
+        if step is not None: grid = step
         ticks = []
         t = -grid*_numpy.floor(-lower/grid)
         while t <= upper:
+            if t == -0: t = 0 #remove neg zero condition
             ticks.append( (t, format % (t,)) )
             t = t + grid
         return ticks