Re: Linking EventHandler to a Control Object
- To: mathgroup at smc.vnet.net
- Subject: [mg88762] Re: Linking EventHandler to a Control Object
- From: Januk <ggroup at sarj.ca>
- Date: Fri, 16 May 2008 05:29:48 -0400 (EDT)
- References: <g0bt5i$o4l$1@smc.vnet.net>
Hi Todd,
I'm not entirely sure that I understood your precise goal, but you
might try something along the lines of the following. Use a helper
function and the ability to trigger functions from Dynamic statements:
updateColours := Module[{temp2},
(color = color /. {Black -> Red, Red -> Green, Green -> Black};
temp2 = Position[test2, trak2];
test2 = ReplacePart[test2, temp2 -> Style[trak2, color]];)
];
trak2 = SetterBar[
Evaluate@Dynamic[trak2, (trak2 = #; updateColours) &],
{"Phe" -> "Phe", "Ser" -> "Ser", "Leu" -> "Leu", "Val" -> "Val"}]
test2 = {"Phe", "Ser", "Leu", "Ser", "Val"}; color = Black;
EventHandler[{Dynamic[trak2], Dynamic[test2]}, {"MouseClicked" :>
updateColours}]
Hope that helps,
Januk
On May 13, 7:13 am, Todd Allen <genesplice... at yahoo.com> wrote:
> Hi folks,
>
> Have any of you tried to use the new
> (V6)EventHandler command to excute a series of actions
> based on input to a control object such as SetterBar?
>
> I have had success getting Mathematica to update a
> displayed list every time the displayed list is
> clicked on, but not when I want a control object to be
> clicked on to update the displayed list.
>
> Probably an example would help clarify:
>
> Example 1: WORKS on my computer
>
> test1 = {"Phe", "Ser", "Leu", "Ser",
> "Val"}; color = Black; trak = "Ser";
> EventHandler[
> Dynamic[test1], {"MouseClicked" :> (color =
> color /. {Black -> Red, Red -> Green, Green ->
> Black};
> temp1 = Position[test1, trak];
> test1 = ReplacePart[test1, temp1 -> Style[trak,
> color]];)}]
>
> Example 2: Does NOT work
>
> trak2 = SetterBar[
> Evaluate[Dynamic[trak2]], {"Phe" -> "Phe", "Ser" ->
> "Ser",
> "Leu" -> "Leu", "Val" -> "Val"}]
> test2 = {"Phe", "Ser", "Leu", "Ser", "Val"}; color =
> Black;
> EventHandler[{Dynamic[trak2],
> Dynamic[test2]}, {"MouseClicked" :> (color =
> color /. {Black -> Red, Red -> Green, Green ->
> Black};
> temp2 = Position[test2, trak2];
> test2 = ReplacePart[test2, temp2 -> Style[trak2,
> color]]; test2)}]
>
> Notice how the SetterBar in example 2 is updated, but
> the corresponding list that should be updated is not.
> Its as though the EventHandler command is actually not
> "seeing" the mouse click.
>
> Would you have any thoughts on how to link the input
> at the control object to the desired response of
> updating a displayed list?
>
> Thanks for any advice you might have!
> Todd
>
> ______________________________________________________________=
_____________=AD_________
> Be a better friend, newshound, and
> know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/=
;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ