0

我对 Gtk2Hs 有问题,我想设置一个cellRenderer可激活的。为此,我需要使用以下方法将其属性设置 cellModeCellRendererModeActivatable

set render [ cellMode:= CellRendererModeActivatable ]

但是编译时出现以下错误

Not in scope: data constructor `CellRendererModeActivatable'

我在我的 Debian Wheezy 上使用 Gtk2Hs 0.12.3 和 GHC 7.4.1。

如果构造函数存在(在文档的正确版本中),我查看了 Hackage 并且......它确实存在

我试图明确加载模块

import Graphics.UI.Gtk.ModelView.CellRenderer

但编译错误保持不变。

你知道错误来自哪里吗?

4

1 回答 1

2

这看起来是那个旧的 Haskell 库中的一个错误:从它的源代码

module Graphics.UI.Gtk.ModelView.CellRenderer (
  -- snip
  CellRendererMode,

以上不是导出构造函数。较新的版本可以:

module Graphics.UI.Gtk.ModelView.CellRenderer (
  -- snip
  CellRendererMode(..),

您可以尝试将 Haskell 库更新到较新的版本。那应该解决它。


替代品Enum即使在旧版本中,该类型也有一个实例,因此作为一种快速而肮脏的解决方法,您可以使用它toEnum 1 :: CellRendererMode 来代替构造函数。

data CellRendererMode = CellRendererModeInert         -- 0
                      | CellRendererModeActivatable   -- 1
                      | CellRendererModeEditable      -- 2
                      deriving (Enum,Eq)
于 2015-02-01T12:40:39.703 回答