File: Dialogs.c

package info (click to toggle)
gridengine 6.2-4
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 51,532 kB
  • ctags: 51,172
  • sloc: ansic: 418,155; java: 37,080; sh: 22,593; jsp: 7,699; makefile: 5,292; csh: 4,244; xml: 2,901; cpp: 2,086; perl: 1,895; tcl: 1,188; lisp: 669; ruby: 642; yacc: 393; lex: 266
file content (157 lines) | stat: -rw-r--r-- 4,018 bytes parent folder | download | duplicates (3)
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--;
}