Re: Initialization cell and button
- To: mathgroup at smc.vnet.net
- Subject: [mg70107] Re: Initialization cell and button
- From: Markus Huber <mhla at gmx.at>
- Date: Wed, 4 Oct 2006 05:58:44 -0400 (EDT)
- References: <email@example.com>
Thank you, the version with the InterpretationBox will work fine for me.
Ingolf Dahl wrote:
> You must remember that the FrontEnd is almost, but not exactly, as smart as
> the bomb in the computer game "Starship Titanic" by Douglas Adams... When
> the "EvaluateInitialization" command is executed, the initialization cells
> are not inserted into the program flow and evaluated immediately; they just
> are put onto the evaluation stack, to be evaluated after the button function
> as such. You thus must put the print command even later on the evaluation
> stack to obtain the desired functionality. The easiest way is of course to
> include a print command as the last initialization cell, but that solution
> is probably too simple for your purposes (?). Another solution is to hide a
> print command inside the button cell. Execute the following command to
> obtain such a button:
> NotebookWrite[InputNotebook, Cell[BoxData[InterpretationBox[ButtonBox["a",
> FrontEndToken["EvaluateCells"]]], ButtonEvaluator->None, Active->True,
> ButtonFrame->"DialogBox"], Print@a]],"Input"]]
> (You have to modify the button if you want to generate a palette from it.)
> Another approach to put commands onto the evaluation stack is to let the
> ButtonFunction create a scrap notebook, write the commands there together
> with a command that closes the same scrap notebook, and then use
> SelectionEvaluate to evaluate these commands. But in this case we then would
> have to redirect the output of Print to be able to see anything.
> Best regards
> Ingolf Dahl
>> -----Original Message-----
>> From: Markus Huber [mailto:mhla at gmx.at]
To: mathgroup at smc.vnet.net
>> Subject: [mg70107] Initialization cell and button
>> I've got the following simplified problem with a button:
>> Create an initialization cell which contains a=1;
>> Create a button with
>> Button["a", Active -> True,
>> ButtonFunction :> (FrontEndExecute[
>> Print@a), ButtonEvaluator -> Automatic] // DisplayForm
>> but say no, if Mathematica asks if to evaluate the
>> initialization cells in the NB.
>> Now press the button .
>> In my opinion the result should be the printout of 1. Instead
>> M prints a. If you press the button again it prints correctly 1.
>> Why is M not aware of the value of a when evaluating the
>> Print function although the initialization cells should have
>> been evaluated already?
>> Markus Huber
Prev by Date:
Next by Date:
On "Equilibrium points for..."
Previous by thread:
RE: Initialization cell and button
Next by thread:
Re: equation question