PtAttachCallback

Gamma/Photon: Using Gamma™ with the Photon microGUIŽ, Version 4.0
Prev |  | Next

# `PtAttachCallback`

`PtAttachCallback` -- associates an action with a Photon event.

## Syntax

    PtAttachCallback (widget, callback_number, callback_function,
    eventmask?|key_cap?, key_mods?, key_flags?)

## Arguments

`widget`

  The widget to attach the callback function on.

`callback_number`

  The callback to trigger on.

`callback_function`

  The function to call when the event occurs.

`eventmask`

  An optional filter, for the callback only.

`callbacks`

  Those that match this eventmask trigger the function.

`keycap`

  Optional keyboard capture ID.

`key_mods`

  Optional keyboard modifiers to the keycap (e.g. SHIFT, CTRL, ALT).

`key_flags`

  Optional key flags (e.g. key up, key down, key repeat).

## Returns

t when successful.

## Description

The PtAttachCallback function is one of the most useful functions to use with Photon in Gamma. This functions allows an action to be associated with a Photon event.

The `callback_number` is usually expressed as a constant. For example, `Pt_CB_ACTIVATE`, `Pt_CB_RAW`, `Pt_CB_SELECTION`. A list of the available callbacks is given with each widget definition in the widget reference.

The `callback_function` is protected using quote operators (`#`, ```, and `@`) and is evaluated only when the callback occurs.

The `eventmask` is used to look for specific events. For example, the callback number `Pt_CB_BUT_PRESS` can be masked with the event mask constant `Pt_EV_BUT_RELEASE` so that the callback function is only called when the mouse button is released.

## Example

This example, `ex_PtAttachCallback.g`, is included in the `gamma_ph_`#`_examples_1_QNX4.tgz` file available on the Cogent Web Site.

    #!/usr/cogent/bin/phgamma

    PtInit(nil);
    win = new(PtWindow);

    function pressed (held)
    {
      if (!held)
        widget.text_string = string("Pressed: cb called ",counter++," times");
      else
        widget.text_string = string("Held: cb called ",counter++," times");
    }

    counter = 1;
    button = new(PtButton);
    button.text_string = "------ Press Me ------";
    PtAttachCallback(button,Pt_CB_ACTIVATE,#pressed(nil));
    PtAttachCallback(button,Pt_CB_REPEAT,#pressed(t));

    PtRealizeWidget(win);
    PtMainLoop();

See the Callback Functions section of the Photon Functions chapter (Tutorial One), or the Photon: the Controller window of the Controller Functions chapter (Tutorial Two) in the Cogent Tools Demo and Tutorials book for an example of this function used in context.

## See Also

PtCallbackInfo, PtRemoveCallback

Prev | Home | Next
`PtAddResource` | Up | `PtCollideWidget`

Copyright 1995-2002 by Cogent Real-Time Systems, Inc.