/*
* XmNap A Motif napster client
*
* Copyright (C) 2000 Mats Peterson
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
* Please send any comments/bug reports to
*
[email protected] (Mats Peterson)
*/
#include <Xm/Xm.h>
#include <Xm/DialogS.h>
#include <Xm/BulletinB.h>
#include <Xm/MessageB.h>
#include <Xm/Label.h>
#include <Xm/PushB.h>
#include "main.h"
#include "msgbox.h"
#include "util.h"
static Widget simpleMsg = NULL;
#define YESNO_YES 1
#define YESNO_NO 2
void ErrMsg(String msg)
{
Widget d, parent;
Arg args[20];
int n;
XmString msgString;
SimpleMsgRemove();
parent = curFocus ? curFocus : topLevel;
msgString = XmStringCreateLocalized(msg);
n = 0;
XtSetArg(args[n], XmNautoUnmanage, False); n++;
XtSetArg(args[n], XmNdefaultPosition, False); n++;
XtSetArg(args[n], XmNnoResize, True); n++;
XtSetArg(args[n], XmNmessageString, msgString); n++;
d = XmCreateErrorDialog(parent, "errMsg", args, n);
XtUnmanageChild(XtNameToWidget(d, "Help"));
XtUnmanageChild(XtNameToWidget(d, "Cancel"));
XtAddCallback(d, XmNokCallback,
(XtCallbackProc)XtDestroyWidget, NULL);
CenterDialog(d);
XmStringFree(msgString);
}
void InfoMsg(String msg)
{
Widget d, parent;
Arg args[20];
int n;
XmString msgString;
SimpleMsgRemove();
parent = curFocus ? curFocus : topLevel;
msgString = XmStringCreateLocalized(msg);
n = 0;
XtSetArg(args[n], XmNautoUnmanage, False); n++;
XtSetArg(args[n], XmNdefaultPosition, False); n++;
XtSetArg(args[n], XmNnoResize, True); n++;
XtSetArg(args[n], XmNmessageString, msgString); n++;
d = XmCreateInformationDialog(parent, "infoMsg", args, n);
XtUnmanageChild(XtNameToWidget(d, "Help"));
XtUnmanageChild(XtNameToWidget(d, "Cancel"));
XtAddCallback(d, XmNokCallback,
(XtCallbackProc)XtDestroyWidget, NULL);
CenterDialog(d);
XmStringFree(msgString);
}
static void YesNoCB(Widget w, int *yesNo,
XmSelectionBoxCallbackStruct *cbs)
{
switch(cbs->reason) {
case XmCR_OK:
*yesNo = YESNO_YES;
break;
case XmCR_CANCEL:
case XmCR_PROTOCOLS:
*yesNo = YESNO_NO;
}
XtDestroyWidget(XtParent(w));
}
int YesNoMsg(String msg, String dflt)
{
Widget d, parent;
Arg args[20];
int n, yesNo;
XmString msgString;
parent = curFocus ? curFocus : topLevel;
msgString = XmStringCreateLocalized(msg);
n = 0;
XtSetArg(args[n], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL); n++;
XtSetArg(args[n], XmNautoUnmanage, False); n++;
XtSetArg(args[n], XmNdefaultPosition, False); n++;
XtSetArg(args[n], XmNnoResize, True); n++;
XtSetArg(args[n], XmNmessageString, msgString); n++;
d = XmCreateQuestionDialog(parent, "yesNoMsg", args, n);
XtUnmanageChild(XtNameToWidget(d, "Help"));
XmStringFree(msgString);
if (dflt) {
XtVaSetValues(d, XmNinitialFocus, XtNameToWidget(d, dflt),
NULL);
}
XtAddCallback(d, XmNokCallback, (XtCallbackProc)YesNoCB,
(XtPointer)&yesNo);
XtAddCallback(d, XmNcancelCallback, (XtCallbackProc)YesNoCB,
(XtPointer)&yesNo);
CenterDialog(d);
yesNo = 0;
while ((! yesNo) || (XtAppPending(appCon)))
XtAppProcessEvent(appCon, XtIMAll);
if (yesNo == YESNO_YES)
return 1;
else
return 0;
}
static void SimpleMsgDestroyCB(Widget w, XtPointer clientData,
XtPointer callData)
{
simpleMsg = NULL;
}
void SimpleMsg(String msg)
{
Widget parent;
Arg args[20];
int n;
XmString msgString;
SimpleMsgRemove();
parent = curFocus ? curFocus : topLevel;
msgString = XmStringCreateLocalized(msg);
n = 0;
XtSetArg(args[n], XmNautoUnmanage, False); n++;
XtSetArg(args[n], XmNdefaultButtonType, XmDIALOG_NONE); n++;
XtSetArg(args[n], XmNmessageString, msgString); n++;
simpleMsg = XmCreateWorkingDialog(parent, "simpleMsg", args, n);
XmStringFree(msgString);
XtUnmanageChild(XtNameToWidget(simpleMsg, "Cancel"));
XtUnmanageChild(XtNameToWidget(simpleMsg, "Help"));
XtAddCallback(simpleMsg, XmNdestroyCallback,
(XtCallbackProc)SimpleMsgDestroyCB, NULL);
CenterDialog(simpleMsg);
ForceDialog(simpleMsg);
}
void SimpleMsgRemove(void)
{
if (simpleMsg) {
XtUnmapWidget(XtParent(simpleMsg));
XtDestroyWidget(XtParent(simpleMsg));
simpleMsg = NULL;
}
}