我如何使用haskell-gi中的GListStore?换句话说,如何将Ptr()转换为GObject?

时间:2017-07-22 09:58:53

标签: haskell gtk gtk3 ffi

我试图使用gtk3的流量框的bindModel功能,这样我就可以给它一个模型并创建子窗口小部件,排序和过滤将为我完成

我不清楚将数据存储和检索到此模型的过程有两种方式:

  1. 如何将任意Haskell数据放入ListStore?说我已定义data Cookie = Cookie [Text] Text。在GListStore' listStoreAppend :: (ObjectK b) => ListStore -> b -> IO ()中,b是什么?如何将Cookie转换为ObjectK?在original C code中,此参数是gpointer ...
  2. 如何将Ptr ()转换回Cookie?流水箱' bindModel的类型为flowBoxBindModel :: (HasCallStack, IsListModel b) => FlowBox -> Maybe b -> (Ptr () -> IO Widget) -> IO ()。要创建子窗口小部件,我需要将它从ListStore获取的Ptr ()转换回Cookie,但是如何?
  3. 所以,回顾一下:如果有人能帮我说明如何(1)我将Haskell数据放在C定义的ListStore中; (2)我如何将指针转换回原始数据形式?

    提前致谢。

    注意:我简化了一些类型,以强调不清楚的部分。

0 个答案:

没有答案