MathGroup Archive 2008

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

Search the Archive

Re: Funny behaviour of ClipboardNotebook[] (Q: How to copy programmatically?)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg86898] Re: [mg86839] Funny behaviour of ClipboardNotebook[] (Q: How to copy programmatically?)
  • From: "Szabolcs HorvÃt" <szhorvat at gmail.com>
  • Date: Wed, 26 Mar 2008 04:47:04 -0500 (EST)
  • References: <200803230601.BAA25755@smc.vnet.net>

Thank you for the reply!  This solution works well.

On Mon, Mar 24, 2008 at 10:12 PM, John Fultz <jfultz at wolfram.com> wrote:
> The proper structure of Notebook[] is Notebook[{cell1, cell2, etc.}, opts].
>  This is documented in the documentation for Notebook[].

Actually the documentation for Notebook[] only contains an example,
but it is not clear that this is the /only/ acceptable syntax, so it
is natural that one starts experimenting.  I tried to achieve an
effect similar to simply copying plain text from Notepad, i.e. I did
not want any style information to be associated with the copied text.
I was not sure what style to use with Notebook[{Cell["abc",
"style"]}], so I tried Notebook[{"abc"}] which appeared to work.
(Most probably the style should be "Input".)

>
>  However, your method of writing to the clipboard isn't going to work robustly.
>  You can read the values off the clipboard notebook pretty robustly, but writing
>  to the clipboard notebook doesn't always interact with the clipboard as you
>  would expect.
>
>  The most robust way of copying something to the clipboard is to create a
>  temporary, invisible notebook with what you want and execute the "Copy" front
>  end token.  This method can also allow you to sidestep the issue of creating
>  correct cells.  E.g.,
>
>  nb = NotebookCreate[Visible -> False];
>  NotebookWrite[nb, "2+2"];
>  SelectionMove[nb, All, Notebook];
>  FrontEndTokenExecute[nb, "Copy"];
>  NotebookClose[nb];

How would one use CreateDocument[] instead of NotebookCreate[] and
NotebookWrite[]?  (According to the documentation, NotebookCreate[] is
obsolete, and CreateDocument[] can insert an expression into the
notebook right after it is created.)

Is the following correct and equivalent to nb = NotebookCreate[];
NotebookWrite[nb, "2+2"] ?

nb = CreateDocument[Cell[BoxData["2+2"], "Input"]];


>
>  There are a few places where Mathematica itself uses this technique to
>  programmatically deliver something to the clipboard.  We're working on a design
>  for a much easier way to do this in future versions.
>
>  Sincerely,
>
>  John Fultz
>  jfultz at wolfram.com
>  User Interface Group
>  Wolfram Research, Inc.
>
>
>
>
>  On Sun, 23 Mar 2008 01:01:12 -0500 (EST), Szabolcs Horvát wrote:
>  >
>  >
>  > When pasting quoted text from an e-mail, Mathematica will offer to
>  > remove the quoting marks.  It says:
>  >
>  > "The text you are pasting appears to be from a quoted email.  Do you
>  > want Mathematica to remove the quoting marks before pasting it?" (Yes|No)
>  >
>  > Here is a quoted expression to try this:
>  >
>  >> {9,
>  >> 0,
>  >> 7,
>  >> 8,
>  >> 7,
>  >> 2,
>  >> 5,
>  >> 0,
>  >> 7,
>  >> 1}
>  >>
>  > The dialogue box also comes up when evaluating the following to access
>  > the clipboard programmatically:
>  >
>  > NotebookGet@ClipboardNotebook[]
>  >
>  > This is expected and understandable.  But the dialogue box appears when
>  > using NotebookPut[] too if the clipboard contains a quoted expression!
>  >
>  > NotebookPut[Notebook[{"abc"}], ClipboardNotebook[]]
>  >
>  > Why does this happen?  Is it a bug?  Also, is this the correct way to
>  > *copy* a string to the clipboard programmatically?  It does work, but I
>  > am not sure if Notebook[{"abc"}] (with no Cells) is a correct Notebook
>  > expression. (Where is the correct syntax documented?)
>
>
>


  • Prev by Date: Re: Mathlink: How do I pass arbitrary data from Mathematica to C?
  • Next by Date: Re: Intersection of 2D Surfaces in 3D
  • Previous by thread: Re: Funny behaviour of ClipboardNotebook[] (Q: How to copy programmatically?)
  • Next by thread: Grabbing a value from a Dynamic Object