lhae-0.0.2: src/Controller/Menu/Table/Transpose.hs
module Controller.Menu.Table.Transpose (tableEventHandler
,columnEventHandler
,rowEventHandler)
where
import Control.Monad (forM_,forM)
import Controller (Controller,onGridView)
import Controller.Dialog (chooseColumnsDialog,chooseRowsDialog)
import Controller.Canonical (getColumn,getRow,addRow',addColumn')
import qualified Controller.Grid as Grid
import View.Component.Grid (getRowLabels,getColumnLabels
,numDataColumns)
import I18n (__)
tableEventHandler :: Controller ()
tableEventHandler = do
n <- onGridView numDataColumns
transposeColumns [0..n-1]
columnEventHandler :: Controller ()
columnEventHandler = chooseColumnsDialog (__ "Transpose") >>= transposeColumns
rowEventHandler :: Controller ()
rowEventHandler = chooseRowsDialog (__ "Transpose") >>= transposeRows
transposeColumns :: [Int] -> Controller ()
transposeColumns cols = do
columnData <- forM cols getColumn
rowLabels <- onGridView getRowLabels
Grid.new Nothing
forM_ columnData addRow'
Grid.updateColumnLabels rowLabels
transposeRows :: [Int] -> Controller ()
transposeRows rows = do
rowData <- forM rows getRow
colLabels <- onGridView getColumnLabels
Grid.new Nothing
forM_ rowData addColumn'
Grid.updateRowLabels colLabels