Hi
I've reached a brickwall with wxHaskell's ListCtrl and I'm hoping for some
help,
please.
Conceptually what I want to do is create items in the ListCtrl and associate a
unique identifier with each item. This identifier would not be displayed in the
UI. An Int64 would be ideal but a String would be fine. When a user clicks on
the item, I want to be able to retrieve this identifier and use it to find the
associated data, in this case a database record.
The items are inserted into the ListCtrl ok with the following code:
showStudy :: ListCtrl l -> (Int,DicomStudy) -> IO ()
showStudy wgDbTable (idx,dcmStudy) = do
listCtrlInsertItemWithData wgDbTable idx $ studyUid dcmStudy
set wgDbTable [item idx := [(patientName . studyPatient) dcmStudy,
studyDescription dcmStudy,
studyDate dcmStudy]]
and the event handler looks like this:
onDbTableEvent :: HasturContext -> EventList -> IO ()
onDbTableEvent HasturCtx {guiDbTable=wgDbTable, guiSeriesList=wgSeriesList}
event =
case event of
ListItemSelected idx -> do
studyUid <- listCtrlGetItemData wgSeriesList idx
infoM "Hastur" $ "DB Table event: " ++ show studyUid
propagateEvent
otherwise ->
propagateEvent
When the user clicks on the ListCtrl item I get an error dialog pop up saying:
"Couldn't retrieve information about list control item X"
where X is idx. The infoM call produces:
"DB Table event: 0"
What am I missing? I've tried listCtrl{Get/Set}Data, listCtrl{Get/Set}Text all
with the same result. listCtrlDeleteItem in the event handler doesn't delete
the
item but produces the result: False.
I've tried searching for examples to no avail. I'm not using images for items
at
the moment as I was trying to keep it simple.
Is what I am trying to achieve possible or would I be better maintaining a
Data.Map with a mapping between idx and the relevant data? If so, how would
that
affect things if the ListCtrl contents are re-ordered (e.g. sort by date)?
Sorry if this seems a stupid query, I'm new to Haskell and trying to learn
after
years of using imperative languages.
James
------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
wxhaskell-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wxhaskell-users