Re: Generic Button/Palette design pattern?
- To: mathgroup at smc.vnet.net
- Subject: [mg114964] Re: Generic Button/Palette design pattern?
- From: Jason Ledbetter <jasonbrent at gmail.com>
- Date: Fri, 24 Dec 2010 04:13:02 -0500 (EST)
- References: <201012230856.DAA05023@smc.vnet.net>
John, I'd love a complete transfer of your knowledge of UI wizardry with M. :-) Sure enough, changing EvaluationNotebook to InputNotebook worked. In my real code, I was passing Evaluator->CurrentValue[EvaluationNotebook[], Evaluator] to CreatePalette thinking that would silently "redirect" everything to my inputnotebook. I clearly need to do a little more reading in the M help in that area. Thanks again. -jbl On Thu, Dec 23, 2010 at 3:04 PM, John Fultz <jfultz at wolfram.com> wrote: > Hold would be more proper than HoldForm here (although both certainly > work). > HoldForm is generally about holding for display purposes, though, where > Hold > provides better feedback when you're just doing expression manipulation > behind > the scenes (by feedback, I mean that it's going to more easily show up in > debugging outputs). > > As for CreatePalette, there is no bug. You're trying to do something which > is > illegal, and for good reason. > > NotebookWrite[EvaluationNotebook[],...] > > That's writing into the *palette*. But palettes are not editable by > default. > You probably want to be writing to InputNotebook[], which is the notebook > where > palettes typically paste their output. > > Sincerely, > > John Fultz > jfultz at wolfram.com > User Interface Group > Wolfram Research, Inc. > > > On Thu, 23 Dec 2010 03:56:02 -0500 (EST), Jason Ledbetter wrote: > > > > I've now got this basically working. I was missing a ReleaseHold in the > > Button form. That said, "CreatePalette" seems to have a bug (at least per > > my > > expectations). > > > > --snip-- > > > > o = { > > { "button1", > > HoldForm[NotebookWrite[EvaluationNotebook[], Cell["button1 pressed"]]] > > }, > > {"button2", > > HoldForm[NotebookWrite[EvaluationNotebook[], Cell["button2 pressed"]]]} > > }; > > Button[#[[1]], ReleaseHold[#[[2]]]] & /@ o > > CreatePalette[%] > > > > --snip-- > > > > > > The two buttons that appear in the notebook act as I expect. The two > > buttons > > that appear in the palette only "beep" when I clicked. > > > > > > I'm not sure how to troubleshoot what's going on under this. > > > > > > -jbl > > > > > > On Wed, Dec 22, 2010 at 4:58 PM, Jason Ledbetter > > <jasonbrent at gmail.com>wrote: > > > >> Folk, > >> > >> I'm trying to write a generic palette that accepts as input a nested > >> list > >> with button names/actions. > >> > >> Apparently my weak comprehension of M is winning once again. > >> > >> First, I'm defining options as pair-wise values in a nested list: > >> > >> o = { > >> { "button1", > >> HoldForm[NotebookWrite[EvaluationNotebook[], Cell["button1 pressed"]]] > >> }, > >> {"button2", > >> HoldForm[NotebookWrite[EvaluationNotebook[], Cell["button2 pressed"]]]} > >> } > >> > >> > >> I would expect that one can then do the following: > >> > >> > >> Button[#[[1]],#[[2]]]&/@o > >> > >> > >> This generates two buttons but the action for those buttons isn't what > >> I'd > >> expect. If I convert that output to "InputForm", the #[[2]] argument is > >> apparently "{"button1", > >> > >> HoldForm[NotebookWrite[EvaluationNotebook[], Cell["button1 > >> pressed"]]]}[[2]]" > >> > >> > >> I can't fathom why. > >> > >> > >> If I run: > >> > >> > >> Print@#[[2]]&/@o > >> > >> > >> I receive just the output I expect. e.g., > >> "NotebookWrite[EvaluationNotebook[], Cell[button1 pressed]]", etc. > >> > >> > >> The ultimate goal is to do something like: > >> > >> > >> CreatePalette[Button[Style[#[[1]], 12, FontFamily->"Times"], #[[2]], > >> Appearance->"Palette", ImageSize->120]& /@ o, Saveable->False, Spacings- > >> >0] > >> > >> > >> This allowing me to readily open a palette by just customizing what > >> exists > >> in the 'o' list. > >> > >> > >> If anyone can point out what I'm missing that should apparently be > >> obvious > >> here, I'd appreciate it (And I'm almost positive my HoldForm[] usage is > >> not > >> correct yet). > >> > >> > >> Thanks, > >> > >> > >> -jbl > > >
- References:
- Re: Generic Button/Palette design pattern?
- From: Jason Ledbetter <jasonbrent@gmail.com>
- Re: Generic Button/Palette design pattern?