MathGroup Archive 1998

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

Search the Archive

Button to open notebook?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg13367] Button to open notebook?
  • From: murray at math.umass.edu (Murray Eisenberg)
  • Date: Mon, 20 Jul 1998 02:50:20 -0400
  • Organization: University of Massachusetts, Amherst
  • Sender: owner-wri-mathgroup at wolfram.com

AIM: I want to create a button that, when clicked, opens another
notebook in the same directory as the one containing that button.  

QUESTION 1: Is a hypertext button transportable across platforms and
immune to a move of both the notebooks -- the source with the button
and the target to be opened -- together to another directory?  I ask
because I created such a hypertext button and its expression is:

Cell[BoxData[
    ButtonBox["Cat",
      ButtonData:>{
        FrontEnd`FileName[ {
          ParentDirectory[ ], "Temp"}, "Cat.nb", CharacterEncoding ->
"WindowsANSI"], None},
      ButtonStyle->"Hyperlink"]], "Input"]

This seems to have some hard-coding of the source notebook's current
directory ("Temp") as well as the "WindowsANSI" character encoding.

If this will be OK when I move the notebooks together on my computer, or
transport them to another platform (Mac), then I will be happy.

I will be even happier if I can have an answer to the following
question.

QUESTION 2: Trying to finesse my uncertainty as to the answer to
Question 1, I first  tried the following.  In one cell I evaluated the
following expression:

thisnotebookdir = "FileName" /.
NotebookInformation[EvaluationNotebook[]]/. FrontEnd`FileName[d_List,
nam_, ___] :> ToFileName[d];

Then I created a button whose expression is:

Cell[BoxData[
    ButtonBox[
      StyleBox[
        RowBox[{"Open", " ", "notebook"}],
        FontSize->13,
        FontColor->RGBColor[0, 0, 1]],
      ButtonFunction:>(NotebookOpen[ 
          StringJoin[ thisnotebookdir, "Cat.nb"]]&),
      ButtonEvaluator->Automatic,
      Active->True,
      ButtonStyle->None,
      ButtonNote->"\"Open notebook Cat\""]], "Input",
  FontSize->24]

This works just fine.  But it is not a clean solution, since it requires
the separately defined variable thisnotebookdir.

So I tried to modify the preceding button expression so as to include
the value that variable in place:

Cell[BoxData[
    ButtonBox[
      StyleBox[
        RowBox[{"Open", " ", "notebook"}],
        FontFamily->"Helvetica",
        FontSize->13,
        FontColor->RGBColor[0, 0, 1]],
      ButtonFunction:>(NotebookOpen[ 
          StringJoin[ 
            ReplaceAll[ "FileName", 
              ReplaceAll[ 
                NotebookInformation[ 
                  EvaluationNotebook[ ]], FrontEnd`FileName[ d_List,
nam_, ___] :>
    ToFileName[ d]]], 
            "Cat.nb"]]&),
      ButtonEvaluator->Automatic,
      Active->True,
      ButtonStyle->None,
      ButtonNote->"\"Open notebook Cat\""]], "Input",
  FontSize->24] 

But if I now click on this button, evaluation never seems to end -- the
kernel keeps running an evaluation and the target notebook does not get
opened.

Diagnosis?  Cure?

--
  Murray Eisenberg                       Internet: 
murray at math.umass.edu
  Mathematics & Statistics Dept.            Voice:  413-545-2859 (W)
  University of Massachusetts                       413-549-1020 (H)
  Amherst, MA 01003                           Fax:  413-545-1801


  • Prev by Date: PlotLabel in 3D
  • Next by Date: Animation
  • Previous by thread: PlotLabel in 3D
  • Next by thread: Re: Button to open notebook?