1

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 设置jsStaticJust "./.Hoed/wwwroot"时,以下代码(显然)导致我的 GUI 只显示我的应用程序启动时已经存在的初始图像:

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

4

1 回答 1

1

(作者在这里。)显然,删除这些功能时我没有考虑您的用例。:-) 如果您愿意,我可以将它们重新添加,可以在 github 上提出问题吗?

JavaScript 端有多种方法可以在某个 URL 处重新加载文件。例如,请参阅问题“在同一网址使用新图像刷新图像”

于 2015-05-16T08:10:06.973 回答