Ниже представлена программа Haskell, которая запускает ноутбук wxHaskell.Как получить новый выбранный индекс страницы на ноутбуке, изменив страницу с помощью wxHaskell?
Это работает, за исключением того, что я не могу справиться с событием смены страницы, чтобы получить индекс нулевой выбранной. Вместо этого я получаю предыдущий (см. Комментарий «ПРОБЛЕМА» в приведенном ниже коде).
Предупреждение об этом в C wxNotebook Class Reference documentation (см. Раздел о getSelection), а также в разделе «Подробное описание» wxBookCtrlEvent Class Reference documetnation, но я не понимаю, как его использовать.
Может ли кто-нибудь, пожалуйста, показать мне какой-нибудь рабочий код для ноутбука, где вы получаете новый индекс страницы, когда пользователь выбирает новую страницу (нажав на заголовок)?
Второй вопрос: я не понимаю, что аргумент 0 находится рядом с - ???.
Спасибо заранее!
module Main where
import Graphics.UI.WX
import Graphics.UI.WXCore
main :: IO()
main =
start $
do
f <- frame []
nbk <- notebook f []
pages <- sequence [ do
p <- panel nbk []
return $ tab ("Page "++show i) (container p $ label ("Page " ++ show i))
| i <- [0..3]]
set f [layout := fill $ tabs nbk pages,clientSize := sz 300 100]
let h event = case event of
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED ->
do
i <- notebookGetSelection nbk -- PROBLEM: gives the OLD index
infoDialog f "Event otification" $ "Notebook selected page: " ++ show i
propagateEvent
windowOnEvent nbk
[wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED]
0 -- ???
h