
Arthur Baars wrote:
Hi,
A "Checkbox" is instance of the class Checkable: http://wxhaskell.sourceforge.net/doc/ Graphics.UI.WX.Classes.html#t%3ACheckable
This means you can "get" and "set" the "checked" property for checkboxes. for example: c <- get cbEdit checked set cbEdit [checked := not c ]
The following code makes the checkbox print its state every time it is checked or unchecked: cbEdit <- checkBox f [text := "Edit Mode" ] set cbEdit [ on command := do v <- get cbEdit checked print v ]
AHA! Yes, very useful. The problem I was having before was that I was trying to create a separate function onCbEdit, thus: cbEdit <- checkBox p1 [text := "Edit Mode", on command := onCbEdit textlog ] This had the problem that onCbEdit basically needed to have its control passed in (i.e. cbEdit) as a parameter in order to inspect its state. So I wanted to do something like: cbEdit <- checkBox p1 [text := "Edit Mode", on command := onCbEdit textlog cbEdit ] Except you can't do that, because cbEdit isn't yet defined. But your suggestion gets 'round that. In the main loop, I now do: cbEdit <- checkBox p1 [text := "Edit Mode" ] set cbEdit [ on command := onCbEdit textlog cbEdit ] and in my where clause I do: onCbEdit textlog me = do checkedp <- get me checked appendText textlog "onCbEdit\n" appendText textlog (show checkedp) Of course, I'll ultimately want it to do something much more interesting than that - but I was just scratching my head wondering how on earth it could be done; until you came along. Hmm. interesting. I'm finding Haskell a bit head-scratching generally. The syntax is unfamiliar, and Monads, blimey. My understanding of them so far is that they form a barrier between the big, nastey, stateful world, and the clean functional world that I as a programmer occupy. Although I seem to be using a lot of do statements, which presumably means that I'm back in the world of imperative programming. I program in VBA for a living now, but I have a lot of familiarity with Python, and I've done a fair amount of C in my time. I know a bit about C++, but have never gotten involved much with the GUI side of it. A few days ago, I installed an old version of Visual C++, and generated an MFC boilerplate app. My impression is that this MFC/C++ stuff is a confused mess. Admittedly I know very little about MFC; but I'm fairly confident that if a good programmer sat down to design a GUI system from scratch, he would not end up with something like MFC. There seems to be too many "bits" to it, and you have to scatter your declarations over too many files, with scaffolding everywhere. My application also needs to create GUI elements on the fly - and the MFC approach to doing this is woefully painful. I'm currently hacking BouncingBalls.hs to be more to my liking (my balls don't bounce, for starters). The way it adds balls is straighforward. I find I need to hack code that already-exists because my understanding of the syntax and principles is very limited. I continue my Haskell experiments further ...
Arthur
PS: there is a mailinglist for wxhaskell-related questions: http://lists.sourceforge.net/lists/listinfo/wxhaskell-users
Seems quite dormant, though. Only 4 postings last month. BTW, apologies Arthur Baars - I meant to email this response to the newsgroup, but ended up posting to him personally. ___________________________________________________________ Yahoo! Messenger - NEW crystal clear PC to PC calling worldwide with voicemail http://uk.messenger.yahoo.com