Plot-ho-matic 0.10.0.0 → 0.10.1.0
raw patch · 6 files changed
+31/−22 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ PlotHo: LinearScalingAutoRange :: AxisType
+ PlotHo: LinearScalingHistoryRange :: AxisType
+ PlotHo: LinearScalingManualRange :: AxisType
+ PlotHo: LogScaling :: AxisType
+ PlotHo: [defaultXAxis] :: PlotterOptions -> AxisType
+ PlotHo: [defaultYAxis] :: PlotterOptions -> AxisType
+ PlotHo: data AxisType
- PlotHo: PlotterOptions :: Double -> PlotterOptions
+ PlotHo: PlotterOptions :: Double -> AxisType -> AxisType -> PlotterOptions
Files
- CHANGELOG.md +5/−0
- Plot-ho-matic.cabal +1/−1
- src/PlotHo.hs +2/−1
- src/PlotHo/GraphWidget.hs +1/−1
- src/PlotHo/OptionsWidget.hs +15/−17
- src/PlotHo/PlotTypes.hs +7/−2
CHANGELOG.md view
@@ -1,3 +1,8 @@+0.10.1.0+---+* set default xaxis types+* move reset axis range buttons higher+ 0.10.0.0 --- * Better error messages when the "impossible" happens :b
Plot-ho-matic.cabal view
@@ -1,5 +1,5 @@ name: Plot-ho-matic-version: 0.10.0.0+version: 0.10.1.0 synopsis: Real-time line plotter for generic data license: BSD3 license-file: LICENSE
src/PlotHo.hs view
@@ -13,6 +13,7 @@ runPlotter , PlotterOptions(..) , Channel+ , AxisType(..) , XAxisType(..) , newHistoryChannel , Meta@@ -29,7 +30,7 @@ import PlotHo.Channel ( newChannel ) import PlotHo.HistoryChannel ( Meta, XAxisType(..), newHistoryChannel, newHistoryChannel' ) import PlotHo.Plotter ( runPlotter )-import PlotHo.PlotTypes ( Channel, PlotterOptions(..) )+import PlotHo.PlotTypes ( AxisType(..), Channel, PlotterOptions(..) ) -- $simple --
src/PlotHo/GraphWidget.hs view
@@ -89,7 +89,7 @@ signalSelector <- newSignalSelectorArea elements redraw largestRangeMVar <- CC.newMVar (XY defaultHistoryRange defaultHistoryRange)- optionsWidget <- makeOptionsWidget largestRangeMVar redraw+ optionsWidget <- makeOptionsWidget options largestRangeMVar redraw let handleDraw :: Render () handleDraw = do
src/PlotHo/OptionsWidget.hs view
@@ -24,8 +24,8 @@ , owGetAxes :: IO (Axes Double) } -makeOptionsWidget :: CC.MVar (XY (Double, Double)) -> IO () -> IO OptionsWidget-makeOptionsWidget largestRangeMVar redraw = do+makeOptionsWidget :: PlotterOptions -> CC.MVar (XY (Double, Double)) -> IO () -> IO OptionsWidget+makeOptionsWidget plotterOptions largestRangeMVar redraw = do -- user selectable range xRangeEntry <- Gtk.entryNew yRangeEntry <- Gtk.entryNew@@ -69,12 +69,7 @@ -- linear or log scaling on the x and y axis? let updateScaling scalingSelector scalingRef = do k <- Gtk.comboBoxGetActive scalingSelector- _ <- case k of- 0 -> writeIORef scalingRef LinearScalingAutoRange- 1 -> writeIORef scalingRef LinearScalingHistoryRange- 2 -> writeIORef scalingRef LinearScalingManualRange- 3 -> writeIORef scalingRef LogScaling- _ -> error "the \"impossible\" happened: scaling comboBox index should be < 4"+ writeIORef scalingRef (toEnum k) redraw xScalingSelector <- Gtk.comboBoxNewText@@ -83,13 +78,16 @@ ["linear (auto)", "linear (history)", "linear (manual)", "logarithmic (auto)"] mapM_ (Gtk.comboBoxAppendText xScalingSelector . T.pack) scalingOptions mapM_ (Gtk.comboBoxAppendText yScalingSelector . T.pack) scalingOptions- Gtk.comboBoxSetActive xScalingSelector 0- Gtk.comboBoxSetActive yScalingSelector 0++ Gtk.comboBoxSetActive xScalingSelector (fromEnum (defaultXAxis plotterOptions))+ Gtk.comboBoxSetActive yScalingSelector (fromEnum (defaultYAxis plotterOptions))+ xScalingBox <- labeledWidget "x scaling:" xScalingSelector yScalingBox <- labeledWidget "y scaling:" yScalingSelector - xScalingRef <- newIORef LinearScalingAutoRange- yScalingRef <- newIORef LinearScalingAutoRange+ xScalingRef <- newIORef (defaultXAxis plotterOptions)+ yScalingRef <- newIORef (defaultYAxis plotterOptions)+ updateScaling xScalingSelector xScalingRef updateScaling yScalingSelector yScalingRef void $ on xScalingSelector Gtk.changed (updateScaling xScalingSelector xScalingRef)@@ -107,18 +105,18 @@ vbox <- Gtk.vBoxNew False 4 Gtk.set vbox- [ Gtk.containerChild := xScalingBox+ [ Gtk.containerChild := resetXHistoryButton+ , Gtk.boxChildPacking resetXHistoryButton := Gtk.PackNatural+ , Gtk.containerChild := xScalingBox , Gtk.boxChildPacking xScalingBox := Gtk.PackNatural , Gtk.containerChild := xRangeBox , Gtk.boxChildPacking xRangeBox := Gtk.PackNatural- , Gtk.containerChild := resetXHistoryButton- , Gtk.boxChildPacking resetXHistoryButton := Gtk.PackNatural+ , Gtk.containerChild := resetYHistoryButton+ , Gtk.boxChildPacking resetYHistoryButton := Gtk.PackNatural , Gtk.containerChild := yScalingBox , Gtk.boxChildPacking yScalingBox := Gtk.PackNatural , Gtk.containerChild := yRangeBox , Gtk.boxChildPacking yRangeBox := Gtk.PackNatural- , Gtk.containerChild := resetYHistoryButton- , Gtk.boxChildPacking resetYHistoryButton := Gtk.PackNatural ] return
src/PlotHo/PlotTypes.hs view
@@ -63,10 +63,11 @@ ) data AxisType- = LogScaling- | LinearScalingAutoRange+ = LinearScalingAutoRange | LinearScalingHistoryRange | LinearScalingManualRange+ | LogScaling+ deriving (Enum) defaultHistoryRange :: (Double, Double) defaultHistoryRange = (read "Infinity", - read "Infinity")@@ -109,10 +110,14 @@ data PlotterOptions = PlotterOptions { maxDrawRate :: Double -- ^ limit the draw frequency to this number in Hz+ , defaultXAxis :: AxisType+ , defaultYAxis :: AxisType } instance Default PlotterOptions where def = PlotterOptions { maxDrawRate = 40+ , defaultXAxis = LinearScalingAutoRange+ , defaultYAxis = LinearScalingAutoRange }