我正在尋找一個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