Poszukuję przykładowego polecenia przeciągnij i upuść wx. Jeszcze nie znalazłem.wx haskell Przeciągnij i upuść przykład
Dostępne? lub wskazówki?
tej pory:
- widzę zdarzenie
on drag
(ale nie „na drop”) - mysz jest po prostu dając
left up
na cel widzę jakiś komentarz, gdzie jestem rzekomą do attache cel upuszczania na obiekt, ale nie widzę jak to jest wywoływana:
Graphics.UI.WXCore.DragAndDrop
L 51
- | Utwórz "DropSource". Następnie "dragAndDrop" zastąp cel 'DataObject' obiektu docelowego 'DataObject'.
dropSource :: DataObject a -> b Okno -> IO (DropSource())
nie widzę gdzie jest warstwa WX powyżej Graphics.UI.WXCore.DragAndDrop
- to (zbyt) Chyba stary: [0]: http://bb10.com/haskell-wxhaskell-general/2007-08/msg00035.html
Zresztą dość rozmyta teraz ...
edit: to jest tam, gdzie stoję teraz: w przeciągu nie dostaję aktywowane, więc nie ma dragAndDrop ani (na myszy w Xinput jest tylko tam, aby zobaczyć, co się dzieje) (dragger
jest to, co dostałem z [O]), ale robię nie dostać z tego zdarzenia)
--- 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