1
////////////////////////////////////////////////////////////////////////////////
3
// This file is part of Toolkit for Conceptual Modeling (TCM).
4
// (c) copyright 1997, Vrije Universiteit Amsterdam.
5
// Author: Frank Dehne (frank@cs.vu.nl).
7
// TCM is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
12
// TCM is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
17
// You should have received a copy of the GNU General Public License
18
// along with TCM; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21
////////////////////////////////////////////////////////////////////////////////
22
#include "questiondialog.h"
23
#include "application.h"
28
QuestionDialog::QuestionDialog(Widget w, bool cancel):
29
MessageDialog(w, MessageDialog::QUESTION) {
34
void QuestionDialog::CreateWidget() {
35
Arg args[9]; int i = 0;
36
XtSetArg(args[i], XmNautoUnmanage, GetAutoUnmanage()); i++;
37
SetWidget(XmCreateQuestionDialog(GetParent(), (char *)GetClassName(), args, i));
40
void QuestionDialog::Configure() {
43
ManageHelpButton(False);
44
SetOKButtonLabel("Yes");
45
SetCancelButtonLabel("No");
46
SetHelpButtonLabel("Cancel");
47
// define callback for the yes, no and cancel button
48
SetOKCallback(ResponseCB, this);
49
SetCancelCallback(ResponseCB, this);
51
SetHelpCallback(ResponseCB, this);
53
ManageHelpButton(False);
56
void QuestionDialog::Popup() {
57
error("%s, line %d: Use GetAnswer() in question dialog\n",
61
void QuestionDialog::Show(const char *, const char *) {
62
error("%s, line %d: Use GetAnswer() in question dialog\n",
66
void QuestionDialog::Show(const char *s, const string *m) {
70
QuestionDialog::AnswerType QuestionDialog::GetAnswer() {
71
MessageDialog::Popup();
73
// while the user has not provided an answer, simulate main
74
// loop. The answer changes as soon as the user selects one of
75
// the buttons and the callback routine changes its value.
76
// Don't break loop until XtPending() also returns False to
77
// assure widget destruction.
78
XtAppContext applicationContext = theApplication->GetAppContext();
79
while (answer == UNKNOWN)
80
XtAppProcessEvent(applicationContext, XtIMAll);
84
void QuestionDialog::ResponseCB(Widget, XtPointer cd, XtPointer cbs) {
85
XmAnyCallbackStruct *s = (XmAnyCallbackStruct *)cbs;
86
QuestionDialog *q = (QuestionDialog *)cd;