ProblemDuring long database operations I want to have an hour-glass cursor appear. SolutionThe XmNdbBusyCallback on Database Access widgets proovides the information you need to know when to display the busy cursor. All you need is a utility function to do that. The file hourCursor.c contains a routine which will change the cursor on all the top level shells in the application to a large hour-glass. To hook this up to a Database Access widget, do the following: #include "hourCursor.h" /************************************************************************ * * * Busy - our XmNdbBusyCallback handler. The busy callback is useful * * for setting an hourglass cursor during a DBMS operation. * * * ************************************************************************/ static void Busy(w, client, call) Widget w; XtPointer client; XtPointer call; { XiDBDataSourceNotifyCallbackStruct *ns = (XiDBDataSourceNotifyCallbackStruct *) call; /* Verify the reason is right */ if(ns->reason != XiDB_NOTIFY_BUSY) return; /* subreason: 0 for operation over, * non-zero for operation starting */ HourGlass_SetShellCursorHierarchy(AppShell, ns->subreason); XSync(XtDisplay(AppShell), False); } ... When you create your Database Access widget Widget theDB, parent; ... theDB = XtVaCreateWidget("theDB", xiDBSybaseDataSrcWidgetClass, parent, NULL); /* Track DBMS operations so we can put up an hourglass cursor */ XtAddCallback(theDB, XmNdbBusyCallback, Busy, (XtPointer) 0); ...
|