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() + }+@ -}