Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Button[label, action] - InputString[]?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83591] Button[label, action] - InputString[]?
  • From: Joe Sneed <jsneed at mines.edu>
  • Date: Sat, 24 Nov 2007 04:07:39 -0500 (EST)
  • Organization: Colorado School of Mines

I run V6.01 under Windows XP

I want to construct a button that reads a string input and writes 
something determined by the input to a notebook. When I click on "close" 
of "X" in the input dialog box, I want nothing to appear in the notebook.

I have two questions: one dealing with evaluation method; another 
dealing with the use of If[ _, _, _] in the button function.

As a test, I try to read the input and write it to a selected notebook using

Button[Style["LABEL", Black, 10, FontFamily -> "Arial Black"],
tag=InputString[];
nb=SelectedNotebook[];
If[tag ? $Canceled,
NotebookWrite[nb,Cell[tag,"Text"]]]]

to construct the button.

This yields a button whose underlying expression is

Cell[BoxData[

ButtonBox[
StyleBox["\<\"LABEL\"\>",
StripOnInput->False,
FrontFaceColor->GrayLevel[0],
BackFaceColor->GrayLevel[0],
GraphicsColor->GrayLevel[0],
FontFamily->"Arial Black",
FontSize->10,
FontColor->GrayLevel[0]],
Appearance->Automatic,
ButtonFrame->"DialogBox",
ButtonFunction:>($CellContext`tag =
InputString[]; $CellContext`nb =
SelectedNotebook[];
If[$CellContext`tag != $Canceled,
NotebookWrite[$CellContext`nb,
Cell[$CellContext`tag, "Text"]]]),
Evaluator->Automatic,
Method->"Preemptive"]], "Output",
CellChangeTimes->{3.40483095753125*^9},
CellLabel->"Out[1]="]

This produces an input dialog box that times out without accepting 
input. if I change the default

Method->"Preemptive" -- to---> Method->"Queued"

My first question is , "Why must I change the method?".

Having made the method change, I can enter input and without the If[ ] 
write the input to the selected notebook.
But the conditional does not work. If I enter input and click OK, 
nothing is entered into the selected notebook.

The purpose of the conditional If[ ] is to avoid the appearance of 
"$Canceled" in the selected notebook when one clicks on "Cancel" or "X" 
in the input dialog box.

My second question has two parts: 1) "Why doesn't the If[ ] work; 2) 
what will work to accomplish my purpose?".

Any help much appreciated....

Joe
-- 

Joe Sneed
Division of Liberal Arts and International Studies
Colorado School of Mines
Golden CO USA
mailto:jsneed at mines.edu
http://www.mines.edu/fs_home/jsneed/





  • Prev by Date: Re: Database like "left join" or SAS like Merge function
  • Next by Date: Re: Database like "left join" or SAS like Merge function
  • Previous by thread: Mathematica SIG (Northern Virginia and Washington DC)
  • Next by thread: Re: Button[label, action] - InputString[]?