These features have been added to Photon widgets to emulate GTK behavior.
These two methods that get and set the text of a PtLabel are used to replicate similar methods in GTK.
/*-------------------------------------------------------------------- * Method: PtLabel.get_text * Returns: a string * Description: Emulates the GtkEntry.get_text() method, needed for * the PtText widget, which is a child class of PtLabel. * There is no need for an equivalent method in gtk.g. *------------------------------------------------------------------*/ method PtLabel.get_text() { .text_string; } /*-------------------------------------------------------------------- * Method: PtLabel.set_text * Returns: t or nil * Description: Emulates the GtkEntry.set_text() method, needed for * the PtText widget, which is a child class of PtLabel. * There is no need for an equivalent method in gtk.g. *------------------------------------------------------------------*/ method PtLabel.set_text(str) { .text_string = str; }
The .rollover method lets us attach a rollover callback to any Photon widget. It checks to see if the pointer has entered or left the widget, and sends the appropriate message using the send_message function.
/*-------------------------------------------------------------------- * Method: PtBasic.rollover * Returns: t or nil * Description: Called by the attach_msg function to provide rollover * functionality on any widget. Used to send messages to * the Controller when the pointer is on a button or other * widget. *------------------------------------------------------------------*/ method PtBasic.rollover(msg_in, msg_out) { if (cbinfo.event.subtype == Ph_EV_PTR_ENTER) send_message(msg_in); else if (cbinfo.event.subtype == Ph_EV_PTR_LEAVE) send_message(msg_out); }
The attach_msg function is a convenience function for attaching rollover callbacks on buttons. There is no built-in callback in Gamma/Photon for a Ph_EV_BOUNDARY event, so we use the Pt_CB_RAW callback to create one. The Pt_CB_RAW callback can be used in the format shown to attach a callback to any event. The event can be accessed by the cbinfo.event resource. In this case, the Ph_EV_BOUNDARY event has two subtypes, Ph_EV_PTR_ENTER and Ph_EV_PTR_LEAVE, which are accessed through the cbinfo.event.subtype resource, as in the PtBasic.rollover method shown above.
/*-------------------------------------------------------------------- * Function: attach_msg * Returns: t or nil * Description: Attaches a PtBasic.rollover demo library method to a widget * boundary event. Uses Pt_CB_RAW to access the Ph_EV_BOUNDARY * event, since there is no callback associated with a * Ph_EV_BOUNDARY event for a PtBasic widget. *------------------------------------------------------------------*/ function attach_msg(widget, msg_in, msg_out) { PtAttachCallback (widget, Pt_CB_RAW, `(@widget).rollover(@msg_in, @msg_out), Ph_EV_BOUNDARY); }
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.