PtContainerHold, PtContainerRelease

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

# `PtContainerHold`, `PtContainerRelease`

`PtContainerHold`, `PtContainerRelease` -- prevent/allow updating of container-widget contents.

## Syntax

    PtContainerHold (widget)
    PtContainerRelease (widget)

## Arguments

`widget`

  A PtContainer widget.

## Returns

t if successful.

## Description

`PtContainerHold` prevents the updating of contents of the `widget`. `PtContainerRelease` allows updating to continue.

Successive calls to `PtContainerHold` increment a counter. An equal number of calls to `PtContainerRelease` are required to decrement the counter so the `widget` can be updated.

## Example

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

    #!/usr/cogent/bin/phgamma

    /*  This sample program puts two panes in a window.
        Each pane contains a label that is updated every
        second by a timer.  A button toggles the Held and
        Released state for each pane.
    */

    require_lisp("PhotonWidgets");
    PtInit(nil);
    win=new(PtWindow);

    class_add_ivar(PtPane,#held,nil);

    but1 = new(PtButton);
    but1.text_string = "Released";
    but1.SetPos(20,40);

    but2 = new(PtButton);
    but2.text_string = "Released";
    but2.SetPos(20,140);

    pane1 = new(PtPane);
    pane1.fill_color = PgRGB(160,160,160);
    pane1.SetArea(100,0,200,100);

    time1 = new(PtLabel);
    time1.text_string = date();

    PtSetParentWidget(win);
    pane2 = new(PtPane);
    pane2.fill_color = PgRGB(220,220,220);
    pane2.SetArea(100,100,200,100);

    time2 = new(PtLabel);
    time2.text_string = date();

    every(1,#time1.text_string = date());
    every(1,#time2.text_string = date());

    function toggle_hold (pane)
    {
      if (pane.held)
      {
        PtContainerRelease(pane);
        pane.held = nil;
        widget.text_string = "Released";
      }
      else
      {
        PtContainerHold(pane);
        pane.held = t;
        widget.text_string = "Held";
      }
    }

    PtAttachCallback(but1,Pt_CB_RAW,#toggle_hold(pane1),Ph_EV_BUT_PRESS);
    PtAttachCallback(but2,Pt_CB_RAW,#toggle_hold(pane2),Ph_EV_BUT_PRESS);

    PtRealizeWidget(win);

    PtMainLoop();

## See Also

In Photon documentation: PtContainerRelease, PtContainerHold.

Prev | Home | Next
`PtContainerGiveFocus` | Up | `PtDestroyWidget`

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