1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
/*
* Motif Tools Library, Version 3.1
* $Id$
*
* Written by David Flanagan.
* Copyright (c) 1992-2001 by David Flanagan.
* All Rights Reserved. See the file COPYRIGHT for details.
* This is open source software. See the file LICENSE for details.
* There is no warranty for this software. See NO_WARRANTY for details.
*
* $Log$
* Revision 1.1.1.1 2001/07/18 11:06:02 root
* Initial checkin.
*
* Revision 1.2 2001/06/12 16:25:28 andre
* *** empty log message ***
*
*
*/
#include <Xmt/Xmt.h>
#include <Xmt/ScreenP.h>
#include <Xmt/DialogsP.h>
#include <X11/IntrinsicP.h>
#include <X11/CompositeP.h>
/* ARGSUSED */
#if NeedFunctionPrototypes
void _XmtOkCallback(Widget w, XtPointer tag, XtPointer call_data)
#else
void _XmtOkCallback(w, tag, call_data)
Widget w;
XtPointer tag;
XtPointer call_data;
#endif
{
XmtPerScreenInfo *info = (XmtPerScreenInfo *)tag;
info->blocked = False;
info->button = XmtOkButton;
}
/* ARGSUSED */
#if NeedFunctionPrototypes
void _XmtYesCallback(Widget w, XtPointer tag, XtPointer call_data)
#else
void _XmtYesCallback(w, tag, call_data)
Widget w;
XtPointer tag;
XtPointer call_data;
#endif
{
XmtPerScreenInfo *info = (XmtPerScreenInfo *)tag;
info->blocked = False;
info->button = XmtYesButton;
}
/* ARGSUSED */
#if NeedFunctionPrototypes
void _XmtNoCallback(Widget w, XtPointer tag, XtPointer call_data)
#else
void _XmtNoCallback(w, tag, call_data)
Widget w;
XtPointer tag;
XtPointer call_data;
#endif
{
XmtPerScreenInfo *info = (XmtPerScreenInfo *)tag;
info->blocked = False;
info->button = XmtNoButton;
}
/* ARGSUSED */
#if NeedFunctionPrototypes
void _XmtCancelCallback(Widget w, XtPointer tag, XtPointer call_data)
#else
void _XmtCancelCallback(w, tag, call_data)
Widget w;
XtPointer tag;
XtPointer call_data;
#endif
{
XmtPerScreenInfo *info = (XmtPerScreenInfo *)tag;
info->blocked = False;
info->button = XmtCancelButton;
}
/* ARGSUSED */
#if NeedFunctionPrototypes
void _XmtHelpCallback(Widget w, XtPointer tag, XtPointer call_data)
#else
void _XmtHelpCallback(w, tag, call_data)
Widget w;
XtPointer tag;
XtPointer call_data;
#endif
{
XmtPerScreenInfo *info = (XmtPerScreenInfo *)tag;
/*
* Display a help dialog.
* Use NULL dialog name and NULL title so we get the default.
* We make this a modal dialog, even though info dialogs are generally
* modeless because if we use a modeless one the user can't pop it down
* until the modal dialog underneath is popped down. I don't know if
* this is a bug in motif, or is because the help dialog is not a child
* of the modal dialog underneath, but it is bad behavior, so we work
* around it by using a modal help dialog. Also, this is good because
* we don't have to arrange to automatically pop down the help dialog when
* the modal underneath is popped down; the user can't pop down the modal
* until he dismisses the help.
*/
(void) _XmtDisplayMessage(w, NULL, NULL, info->help_text, NULL,
NULL, NULL, None,
XmDIALOG_INFORMATION,
XmDIALOG_PRIMARY_APPLICATION_MODAL);
}
/* ARGSUSED */
#if NeedFunctionPrototypes
void _XmtDialogPopdownCallback(Widget w, XtPointer tag, XtPointer data)
#else
void _XmtDialogPopdownCallback(w, tag, data)
Widget w;
XtPointer tag;
XtPointer data;
#endif
{
XmtDialogCache *cache = (XmtDialogCache *)tag;
Widget dialog;
/*
* if there is already a free dialog, destroy this one
* and remove it from the cache. Otherwise, just note that
* we now have one free.
*/
if (cache->in_use < cache->num) {
int i;
/*
* w is the shell. Get the dialog child
*/
dialog = ((CompositeWidget)w)->composite.children[0];
for(i=0; i < cache->num; i++)
if (cache->dialogs[i] == dialog) break;
XtDestroyWidget(dialog);
/* now compress the remaining array elements */
for(; i < cache->num-1; i++) cache->dialogs[i] = cache->dialogs[i+1];
cache->num--;
}
cache->in_use--;
}
|