MathGroup Archive 2004

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

Search the Archive

Re: GuiKit, Script[] and external function

  • To: mathgroup at
  • Subject: [mg50997] Re: [mg50970] GuiKit, Script[] and external function
  • From: jeffa at
  • Date: Fri, 1 Oct 2004 04:48:15 -0400 (EDT)
  • References: <>
  • Sender: owner-wri-mathgroup at

> hi all.
> Using the GuiKit, i have a script such as :
> ref = GUILoad[
>     Widget["Frame", {
> ...
>         Script[myFunction[]];
> ...
> }];
> myFunction[] is defined in another package, calles with Needs[`].
> But the GUILoad does not allow to call an external function in a
> Script[] block. I should define it this way :
> Script[myFunction[]:=(...)];
> in the Widget block.
> How can I call this external-defined function in the Script[] block


The GUIKit documentation goes over this in the online help section
GUIKit -> Building GUIs -> Advanced Topics -> Scoping of Scripts

Essentially, GUIKit definitions use their own $ContextPath for loaded
contexts separate from your global kernel loaded packages.

This is both to prevent symbols and definitions in your kernel session
affecting GUIKit definition Script[] code and vis versa.

All you need to do is load any required packages with a separate initial
Script[Needs["MyPackage`"]] and all the packages symbols and definitions
will be available to the following Script[] blocks of the GUIKit
definition throughout its lifetime.

For example, a simple illustration of this is:

  Widget["Button", {"text" -> "Print",
      Script[ Needs["Graphics`Colors`"];],
      BindEvent["action", Script[printColor[]]],
      Script[ printColor[] := Print[Red ];]

But you will notice that the Red definition and loading of
Graphics`Colors` is internal to the GUIKit definition and not defined in
your global kernel session.  Additionally if you separately called
Needs["Graphics`Colors`"] in your kernel session, GUIKit script blocks
would not know the definitions of 'Red' unless you added the
Script[ Needs["Graphics`Colors`"];]

Those familiar with webMathematica will recognize this
encapsulation and separate $ContextPath nature

Thank you,
Jeff Adams
Wolfram Research

  • Prev by Date: Re: Re: Re: Hyperbolic function identity
  • Next by Date: Re: Re: unevaluated, hold, holdform
  • Previous by thread: Re: File Menu, 5 last notebooks
  • Next by thread: Re: Fitting multiple data