Tôi đang tìm một ví dụ về kéo và thả wx haskell. Tôi chưa tìm thấy.wx haskell Ví dụ kéo và thả
Mọi thứ khả dụng? hoặc gợi ý?
Cho đến nay:
- tôi có thể thấy một sự kiện
on drag
(nhưng không "trên thả") - chuột chỉ là đưa ra một
left up
trên mục tiêu tôi thấy một số bình luận mà tôi đang phải để áp dụng mục tiêu thả vào đối tượng, nhưng tôi không thấy nó được gọi như thế nào:
Graphics.UI.WXCore.DragAndDrop
L 51
- | Tạo 'DropSource'. Sau đó, 'dragAndDrop' thay thế mục tiêu 'DataObject' bằng 'DataObject' này.
dropSource :: DataObject a -> Window b -> IO (DropSource())
Tôi không thể nhìn thấy nơi được lớp WX trên Graphics.UI.WXCore.DragAndDrop
- đây là (quá) cũ tôi đoán: [0]: http://bb10.com/haskell-wxhaskell-general/2007-08/msg00035.html
dù sao, khá mờ cho bây giờ ...
chỉnh sửa: đây là nơi tôi đứng bây giờ: khi kéo không được kích hoạt, vì vậy không có dragAndDrop hoặc (trên chuột trong xinput là chỉ để xem những gì đang xảy ra) (dragger
là những gì tôi nhận được từ [O]), nhưng tôi làm không nhận được sự kiện từ này)
--- 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