class PtCallbackInfo
{
event; // PhEvent
reason; // unsigned long
reason_subtype; // unsigned long
// one from the following group, depending on the widget:
basic; // PtBasicCallback
calendar; // PtCalendarSelectCallback
clock_time; // PtClockTimeCallback
container; // PtContainerCallback
divider; // PtDividerCallback
filesel; // PtFileSelCallback
filesel_bkgd; // PtFileSelBkgdCallback
font_name; // string
gen_tree_input; // PtGenTreeInput
graphic; // PhArea
hotkey; // PtHotkeyCallback
html; // PtHtmlCallback
list; // PtListCallback
list_input; // PtListInput
matrix; // CwMatrixCallback
numeric_float; // PtNumericFloatCallback
numeric_integer; // PtNumericIntegerCallback
on_off_button; // PtOnOffButtonCallback
rtmeter; // RtMeterCallback
scrollbar; // PtScrollbarCallback
slider; // PtSliderCallback
terminal_font_change; // PtTerminalFontChange
terminal_input; // PtTerminalInput
terminal_option_change; // PtTerminalOptionChange
terminal_scrlbk_cb; // PtTerminalScrlbkCb
terminal_size_change; // PtTerminalSizeChange
text; // PtTextCallback
tree; // PtTreeCallback
tty_output; // PtTtyOutput
}
This class gives access to callback information. It has three normal instance variables, and a group of widget-specific instance variables that correspond to one or more widgets in Gamma.
Whenever a callback is generated, a locally-scoped instance of PtCallbackInfo, called cbinfo, is created. It has the three regular instance variables, as well as one instance variable from the widget-specific group. You can access these callback variables using dot notation.
![]() | Only one of the instance variables from the group of widget-specific instance variables should be used: the one that actually corresponds to the widget. Using an instance variable that doesn't correspond to the widget will give unpredictable results. |
A PhEvent that caused the generation of the callback.
The value of the callback that was generated.
The value corresponding to the way the callback was generated, if more than one way was possible. The possibilities are callback-specific, and are documented in detail with the relevant widget in the Photon documentation.
Most of the instance variables from the widget-specific group have a callback class associated with them, and they are documented with that class. Those that don't are documented here.
A string comprising the name of the new font. This information comes from the Pt_CB_FONT_MODIFY callback, generated by PtFontSel. Also see Pt_CB_FONT_MODIFY in the PtFontSel section of the Photon documentation.
A PhArea indicating the previous dimensions of the graphic. This information comes from the Pt_CB_RESCALE callback, which is generated when a PtGraphic is rescaled. Also see Pt_CB_RESCALE in the PtGraphic section of the Photon documentation.
This example, ex_Raw.g, is included in the product distribution.
#!/usr/cogent/bin/phgamma
/*
* This example demonstrates how to access raw callback information.
*/
Ph_EV_PTR_STEADY := 2;
Ph_EV_PTR_UNSTEADY := 3;
function main ()
{
require_lisp("PhotonWidgets.lsp");
PtInit (nil);
w = new (PtWindow);
w.SetArea(100, 100, 120, 80);
b = new (PtButton);
b.SetPos(30, 30);
b.text_string = "Test Area";
PtAttachCallback (b, Pt_CB_RAW, #cbBoundary(), Ph_EV_BOUNDARY);
PtRealizeWidget (w);
PtMainLoop();
}
/* widget, cbinfo, event_data are all available here */
function cbBoundary ()
{
local event;
event = cbinfo.event;
if (event.subtype == Ph_EV_PTR_ENTER)
princ ("Enter\n");
else if (event.subtype == Ph_EV_PTR_LEAVE)
princ ("Leave\n");
else if (event.subtype == Ph_EV_PTR_STEADY)
princ ("Steady\n");
else if (event.subtype == Ph_EV_PTR_UNSTEADY)
princ ("Unsteady\n");
else
princ ("unexpected event subtype\n");
}
This example, ex_PtCallbackInfo.g, is included in the product distribution.
#!/usr/cogent/bin/phgamma
/*
* This example demonstrates how to get information from a callback,
* the PtCalendarSelectCallback in this case. The first three
* callback functions print the regular instance variables. The next
* callback function prints the PtCalendarSelectCallback instance
* variable named date. Then the instance variables of date are
* printed by the next three callback functions. The last two
* callback functions print the remaining two variables of
* PtCalendarSelect.
*/
require_lisp("PhotonWidgets.lsp");
PtInit(nil);
win = new(PtWindow);
win.SetPos (300,0);
cal = new(PtCalendar);
cal.SetDim(200,200);
cal.fill_color = 0x88ddbb;
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#pretty_princ("Event: ",cbinfo.event,"\n"));
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#princ("Reason: ",cbinfo.reason,"\n"));
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#princ("Subtype: ",cbinfo.reason_subtype,"\n"));
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#princ("Day: ",cbinfo.calendar.date.day + 1,"\n"));
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#princ("Month: ",cbinfo.calendar.date.month + 1,"\n"));
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#princ("Year: ",cbinfo.calendar.date.year,"\n"));
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#princ("Time: ",cbinfo.calendar.time,"\n"));
PtAttachCallback(cal,Pt_CB_CALENDAR_SELECT,
#princ("Type: ",cbinfo.calendar.type,"\n\n"));
princ(Pt_CB_CALENDAR_SELECT);
PtRealizeWidget(win);
PtMainLoop();
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.