Re: URL to be the value of ButtonData
- To: mathgroup at smc.vnet.net
- Subject: [mg61319] Re: URL to be the value of ButtonData
- From: John Fultz <jfultz at wolfram.com>
- Date: Fri, 14 Oct 2005 22:23:12 -0400 (EDT)
- Reply-to: jfultz at wolfram.com
- Sender: owner-wri-mathgroup at wolfram.com
Murray, The problem is that this button never goes through the kernel. Only the FE sees the ButtonData[], and it doesn't know how to do StringJoin[]. If you don't mind your buttons round-tripping through the kernel, it would be a fairly simple matter to simply add ButtonEvaluator->Automatic but then, of course, if the kernel is in the middle of an evaluation, your hyperlink will hang until its evaluation comes up in the evaluation queue. But given that you want to do something even more sophisticated, there's no way to escape this unless you can push the sophistication back to the point of button creation rather than button execution. I.e., if you could generate the buttons using something like the following: With[{url = ComplexURLGeneratingFunction[]}, ButtonBox["webmath", ButtonData:>{URL[url], None}, ButtonStyle->"Hyperlink"]] Sincerely, John Fultz jfultz at wolfram.com User Interface Group Wolfram Research, Inc. On Mon, 3 Oct 2005 04:06:27 -0400 (EDT), Murray Eisenberg wrote: > I'm trying to build up a local file URL to be the value of ButtonData > for a ButtonBox. (The file is in a subdirectory of the current > notebook's directory, and I want to be able to refer to the target file > no matter where I move the entire directory.) > > If I use an actual string as the argument in ButtonData:>{URL[...], > None}, as in the following expression of that cell, it works just fine: > > Cell[TextData[ButtonBox["webmath", > ButtonData:>{ > URL[ "file:///E:/Documents/WebMath.htm""], None}, > ButtonStyle->"Hyperlink"]], "Text"] > > However, if I try to build up the argument to URL in any way, even as in > the following version where I simply join strings, then Mathematica > reports a MathLink error occurred while receiving BoxData" after I > convertthe expression to an actual input cell and click the hyperlink: > > Cell[TextData[ButtonBox[webmath", > ButtonData:>{ > URL[ > StringJoin["file:///", "E:/Documents/", "WebMath.htm"]], None}, > ButtonStyle->"Hyperlink"]], "Text"] > > What's wrong and how can it be fixed? > > Version: 5.2 for Microsoft Windows (June 20, 2005) > > (I actually want to do something more sophisticated, namely instead of > "E:/Documents/", use the value of a function ThisNBPath I've defined > that will return the path to the directory of the evaluation notebook.) > > -- > Murray Eisenberg murray at math.umass.edu > Mathematics & Statistics Dept. > Lederle Graduate Research Tower phone 413 549-1020 (H) > University of Massachusetts 413 545-2859 (W) > 710 North Pleasant Street fax 413 545-1801 > Amherst, MA 01003-9305