如何在Threepenny-gui 0.6中重新加载更新的文件?

时间:2015-05-15 13:19:56

标签: haskell threepenny-gui

Threepenny-gui更改日志(https://hackage.haskell.org/package/threepenny-gui-0.6.0.1/changelog)读取:"函数loadFile和loadDirectory已被删除,因为我觉得jsStatic选项足以满足大多数用例。"

我的问题是:如何在没有loadFile的情况下重新加载在执行期间更新的图像?

使用Threepenny-gui 0.5我使用了以下代码:

redraw :: UI.Element -> IORef CompTree -> (Maybe Vertex) -> UI ()
redraw img treeRef mcv
  = do tree <- UI.liftIO $ readIORef treeRef
       UI.liftIO $ writeFile ".Hoed/debugTree.dot" (shw $ summarize tree mcv)
       UI.liftIO $ system $ "dot -Tpng -Gsize=9,5 -Gdpi=100 .Hoed/debugTree.dot "
                          ++ "> .Hoed/wwwroot/debugTree.png"
       url <- UI.loadFile "image/png" ".Hoed/wwwroot/debugTree.png"
       UI.element img # UI.set UI.src url

当使用Threepenny-gui 0.6时,我将jsStatic设置为Just "./.Hoed/wwwroot",以下代码(显然)导致我的GUI仅显示应用程序启动时已存在的初始图像:< / p>

redraw :: UI.Element -> IORef CompTree -> (Maybe Vertex) -> UI ()
redraw img treeRef mcv
  = do tree <- UI.liftIO $ readIORef treeRef
       UI.liftIO $ writeFile ".Hoed/debugTree.dot" (shw $ summarize tree mcv)
       UI.liftIO $ system $ "dot -Tpng -Gsize=9,5 -Gdpi=100 .Hoed/debugTree.dot "
                          ++ "> .Hoed/wwwroot/debugTree.png"
       UI.element img # UI.set UI.src "static/debugTree.png"
       return ()

我的Threepenny-gui 0.5的完整代码在这里:https://github.com/MaartenFaddegon/Hoed/blob/master/Debug/Hoed/DemoGUI.hs

1 个答案:

答案 0 :(得分:1)

(作者在这里。)显然,在删除这些功能时我没有考虑你的用例。 :-)如果你愿意,我可以把它们添加回来,可以在github上发表问题吗?

JavaScript端有多种方法可以在某个URL上重新加载文件。例如,请参阅问题"Refresh image with a new one at the same url"