wx haskell ドラッグ アンド ドロップの例を探しています。まだ見つかっていません。
利用可能なものはありますか? またはヒント?
ここのところ:
- イベントを見ることができます
on drag
(ただし、「オンドロップ」はありません) - マウスはちょうど
left up
オンターゲットを与えています ドロップ ターゲットを on object にアタッチするはずのコメントが表示されますが、それがどのように呼び出されるかわかりません。
Graphics.UI.WXCore.DragAndDrop
L51
-- | 「ドロップソース」を作成します。次に、「dragAndDrop」でターゲットの「DataObject」をこの「DataObject」に置き換えます。
dropSource :: DataObject a -> ウィンドウ b -> 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