我正在寻找一个wx haskell拖放示例。我还没有找到。wx haskell拖放示例
任何可用的?或提示?
到目前为止:
- 我可以看到一个
on drag
事件(但不可“水滴”) - 鼠标只是目标给予
left up
我看到一些评论,其中我应该到武官下降目标对象上,但我不知道它是如何调用:
Graphics.UI.WXCore.DragAndDrop
L 51
- 创建'DropSource'。然后'dragAndDrop'用这个'DataObject'替换目标的'DataObject'。
dropSource ::一个数据对象 - >窗口乙 - > IO(DropSource())
我不能看到其中上述Graphics.UI.WXCore.DragAndDrop
- 的WX层,这是(太)老我猜:[0]:http://bb10.com/haskell-wxhaskell-general/2007-08/msg00035.html
反正很模糊,现在...
编辑:此是我现在的立场: 在拖动没有得到激活,所以没有dragAndDrop (在鼠标在xinput只是在那里看看发生了什么) (dragger
是我从[O]得到),但我做没有得到这个事件)
--- test where DnD from yinput to xinput
module Main where
import CustoWidget
import Graphics.UI.WX hiding (empty)
import Data.Graph.Inductive
import Data.Maybe
import Control.Monad
import Graphics.UI.WX.Events
import Graphics.UI.WXCore.WxcClassesMZ
import Graphics.UI.WXCore.WxcClassesAL
import Graphics.UI.WXCore.DragAndDrop
import Graphics.UI.WXCore.Events
import Debug.Trace
main
= start ballsFrame
-- @next : try andrun start within a state
ballsFrame
= do
f <- frame [text := "Layout test"]
p <- panel f [] -- panel for color and tab management.
ok <- button p [text := "Ok"]
can <- button p [text := "Cancel", on command := infoDialog f "Info" "Pressed 'Cancel'"]
xinput <- textEntry p [text := "100", alignment := AlignRight]
yinput <- textEntry p [text := "100", alignment := AlignRight]
set f [defaultButton := ok
,layout := container p $
margin 10 $
column 5 [boxed "coordinates" (grid 5 5 [[label "x:", hfill $ widget xinput]
,[label "y:", hfill $ widget yinput]])
,floatBottomRight $ row 5 [widget ok,widget can]]
]
set xinput [ on mouse := showMe] --, on keyboard := showMeK
set yinput [ ] --on mouse := showMe, on keyboard := showMeK ]
-- fileDropTarget xinput (\pt file -> putStrLn $ show file)
-- prepare the drop source
textdata <- textDataObjectCreate ""
drop <- dropTarget xinput textdata
textdata' <- textDataObjectCreate "text"
src <- dropSource textdata' yinput
-- activate on drag the do drag drop
set yinput [ on drag := onDrag src]
set ok [ on command := onOk f textdata]
return()
onDrag s p = trace ("on drag " ++ show s ++ " " ++ show p)
dragAndDrop s Default (\_ -> return())
onOk f textdata = do
txt <- textDataObjectGetText textdata
infoDialog f "resultText" txt
close f
showMe = \x -> do putStrLn $ show x
dragger win wout = do
textdata <- textDataObjectCreate ""
drop <- dropTarget wout textdata
textdata' <- textDataObjectCreate "text"
src <- dropSource textdata' win
dragAndDrop src Default (\_ -> return())
txt <- textDataObjectGetText textdata
infoDialog wout "resultText" txt