Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Front End Programming question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg54908] Re: Front End Programming question
  • From: David Bailey <dave at Remove_Thisdbailey.co.uk>
  • Date: Sun, 6 Mar 2005 00:55:58 -0500 (EST)
  • References: <d09dm6$d7k$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

János wrote:
> Hi,
> 
> I am looking at John M. Novak presentation he did at the 1999 
> Mathematica Developers's Conference, titled Front End Programming.  
> Based upon his notebook, I ask input questions the following way.  
> First I define two functions, askForInput and dialogForInput.
> 
> askForInput[inputLabel_:
>      ""] := Module[{thenb,
>      result},
>     thenb = dialogForInput[
>        inputLabel];
>      While[Options[thenb,
>         Visible] ===
>        {Visible -> True},
>       Do[Null, {250}]];
>      NotebookFind[thenb,
>       "TheInput", All,
>       CellTags]; result =
>       NotebookRead[thenb];
>      NotebookClose[thenb];
>      MakeExpression[result[[1,
>        1]]]]
> 
> 
> dialogForInput[
>      inputLabel_] :=
>     NotebookPut[Notebook[
>       {Cell[BoxData[StringJoin[
>           inputLabel, " "]],
>         "Input", CellFrame ->
>          True, Evaluatable ->
>          False,
>         ShowCellTags -> True,
>         CellTags ->
>          "TheInput",
>         CellMargins ->
>          {{10, 10}, {4, 4}},
>         Deletable -> False],
>        Cell[BoxData[
>          ButtonBox["OK",
>            RuleDelayed[Butto\
> nFunction,
>             SetOptions[Butt\
> onNotebook[],
>              Rule[Visible,
>               False]]],
>            Rule[ButtonFrame,
>             "DialogBox"]]
>          ], "Input",
>         Editable -> False,
>         Active -> True,
>         TextAlignment ->
>          Center,
>         CellMargins ->
>          {{10, 10}, {20,
>            2}}]},
>       ShowCellBracket ->
>        False, WindowFrame ->
>        "MovableModalDialog",
>       WindowFloating -> False,
>       WindowSize -> {300,
>         150},
>       WindowFrameElements ->
>        {}, WindowElements ->
>        {
>         "VerticalScrollBar"}]]\
> ;
> 
> 
> Then if I want to ask a question I call askForInput and grab the value 
> with the Nest:
> 
> primerLength = ReleaseHold[
>      askForInput[
>       "Length of a Primer:"]];
> primerLength = Nest[Last,
>      primerLength,
>      Depth[primerLength] - 1];
> 
> If I want to ask another question I do the same thing with a different 
> question into another variable, like:
> 
> averagePrimerDistance =
>     ReleaseHold[askForInput[
>       "Average Primer \
> Distance:"]];
> averagePrimerDistance =
>     Nest[Last,
>      averagePrimerDistance,
>      Depth[
>        averagePrimerDistance] \
> - 1];
> 
> Works great, - one question at a time.  My question is, how can I 
> present multiple questions into one dialog and sort out the answers 
> after the values are typed in and the <OK> button is clicked.  I tried 
> a number of different ways, - making inputLabel a List, creating a 
> table of Cells with different CellTags, getting the results back into 
> an array, played with GUIKit, etc... - but did not find the right one.  
> All failed at the NotebookFind[thenb, "TheInput", All, CellTags];  
> command and its variants.  Conceptually the question looks easy, but 
> the devil is - always - in the implementation :)
> 
> Thanks ahead,
> 
> János
> 
> 
> ----------------------------------------------
> Trying to argue with a politician is like lifting up the head of a 
> corpse.
> (S. Lem: His Master Voice)
> 
Hello,

I found GUIKit to be very comprehensive, but extremely hard to use! As a 
result I wrote a package (called the Super Widget Package) which is 
freely available at my site. This package uses GUIKit, but lets you 
build a typical GUI in an almost trivial way, and everything works in a 
'traditional' Mathematica way - for example, you specify colours with 
RGBColor notation, not as

Widget["class:java.awt.Color", InitialArguments -> {255,0,0}]

 From what you describe, it sounds ideal for what you want to do. Feel 
free to email me about it.

David Bailey
dbaileyconsultancy.co.uk


  • Prev by Date: Re: Re: Bug in Import?
  • Next by Date: Re: Re: Goto Line ?
  • Previous by thread: Front End Programming question
  • Next by thread: Re: Front End Programming question