Gtk2Hs:小部件交互
Gtk2Hs : Widget interaction
我正在尝试使用 Gtk2Hs 和 Haskell 创建一个程序,我想知道是否可以让不同的小部件相互通信。
我有一个文本条目,用于编写命令,一个绘图区,当文本条目被验证时,它会绘制一些东西。这两个小部件可以很好地协同工作。
但是,我想在另一个 window 中添加一个 "optional" 树视图,当文本条目中的所有命令都已执行时,它会被更新(这可能需要很长时间) .
由于树视图是 "optional" 并且是在之后才创建的,所以我无法在文本条目定义(如绘图区域)中定义对其更新的回调。
我会创建一个信号(事件?),当所有操作完成并被树视图捕获以更新其数据时发出。
我的问题是:
- 有没有办法用 Gtk2Hs 和 Glib 做到这一点?
- 是否有可用于制作它的模块(如果可能,可移植到 Linux/Windows)?
- 是否有正确的方法来与他人一起制作小部件interract/communicate?
我正在使用 GHC 7.4.1 和 Gtk2Hs 0.12.3
我找到了解决问题的办法:
在主程序中,我创建了一个要执行的操作列表的 IORef :
actionsIO <- newIORef [action_to_do_1,action_to_do_2]
我创建了用于文本输入的自定义组合小部件
ent <- textEntry window canvas state modele parser info actionsIO
在内部,我以这种方式执行操作列表:
actions <- readIORef actionsIO
sequence_ actions
我创建我的树视图
arwin <- arrayWin modele window canvas state info actionsIO
在里面,我 modify/delete/add 对列表的操作是这样的:
let newactions = [new_action_to_do_1,new_action_to_do_2]
writeIORef actionsIO newactions
每次使用特殊条目小部件验证命令时都会执行这些新操作。
可能有一种 "cleaner" 方法可以做到这一点,但这个方法效果很好,完全解决了我的问题。
我正在尝试使用 Gtk2Hs 和 Haskell 创建一个程序,我想知道是否可以让不同的小部件相互通信。
我有一个文本条目,用于编写命令,一个绘图区,当文本条目被验证时,它会绘制一些东西。这两个小部件可以很好地协同工作。
但是,我想在另一个 window 中添加一个 "optional" 树视图,当文本条目中的所有命令都已执行时,它会被更新(这可能需要很长时间) .
由于树视图是 "optional" 并且是在之后才创建的,所以我无法在文本条目定义(如绘图区域)中定义对其更新的回调。
我会创建一个信号(事件?),当所有操作完成并被树视图捕获以更新其数据时发出。
我的问题是:
- 有没有办法用 Gtk2Hs 和 Glib 做到这一点?
- 是否有可用于制作它的模块(如果可能,可移植到 Linux/Windows)?
- 是否有正确的方法来与他人一起制作小部件interract/communicate?
我正在使用 GHC 7.4.1 和 Gtk2Hs 0.12.3
我找到了解决问题的办法:
在主程序中,我创建了一个要执行的操作列表的 IORef :
actionsIO <- newIORef [action_to_do_1,action_to_do_2]
我创建了用于文本输入的自定义组合小部件
ent <- textEntry window canvas state modele parser info actionsIO
在内部,我以这种方式执行操作列表:
actions <- readIORef actionsIO sequence_ actions
我创建我的树视图
arwin <- arrayWin modele window canvas state info actionsIO
在里面,我 modify/delete/add 对列表的操作是这样的:
let newactions = [new_action_to_do_1,new_action_to_do_2] writeIORef actionsIO newactions
每次使用特殊条目小部件验证命令时都会执行这些新操作。
可能有一种 "cleaner" 方法可以做到这一点,但这个方法效果很好,完全解决了我的问题。