packages feed

hsqml-datamodel 0.0.0.0 → 0.0.0.1

raw patch · 2 files changed

+20/−4 lines, 2 files

Files

hsqml-datamodel.cabal view
@@ -1,5 +1,5 @@ name:                hsqml-datamodel-version:             0.0.0.0+version:             0.0.0.1 synopsis:            HsQML (Qt5) data model. description:         HsQML (Qt5) data model. Use any collection (actually, any (Int -> IO a) action) of single constructor data types as a model for use with QML views. license:             BSD3
src/Graphics/QML/DataModel/Tutorial.hs view
@@ -47,8 +47,8 @@   -> TVar [a]   -> IO () setTVarCallbacks model tv = do-  setRowCountCallback model $      length <$> readTVarIO mtv-  setDataCallback     model $ \i -> (!!i) <$> readTVarIO mtv+  setRowCountCallback model $      length <$> readTVarIO tv+  setDataCallback     model $ \i -> (!!i) <$> readTVarIO tv  main = do     registerHaskellModel   @@ -57,7 +57,13 @@     model <- setupDataModel     setTVarCallbacks model storage -    toplevel'class <- newClass [ defPropertyConst' "haskellModelDelegate" . return $ delegate model ]+    skey <- newSignalKey++    toplevel'class <- newClass +       [ defPropertyConst' "haskellModelDelegate" $ \_ -> return (delegate model)+       , defPropertyConst' "self" return +       , defSignal "updateTable" skey +       ]     toplevel'obj <- newObject toplevel'class ()      runEngineLoop defaultEngineConfig @@ -96,6 +102,16 @@  Record fields become roles, and you can use them in any order any with any names you like. Views other than TableView can be used too, of course.++You will also need to reset the model every time you make changes from the Haskell side.+This can be done by connecting the modelReset method to a signal fired from Haskell:++@+  Connections {+    target: self;+    onUpdateTable: hsView.model.modelReset()  +  }+@  -}