|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* HISTORY
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$TOG: MessageB.c /main/18 1999/10/13 16:17:09 mgreess $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
/* (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
|
|
Packit |
b099d7 |
/* (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <string.h>
|
|
Packit |
b099d7 |
#include <Xm/AccColorT.h> /* for XmAccessColorDataRec */
|
|
Packit |
b099d7 |
#include <Xm/ActivatableT.h>
|
|
Packit |
b099d7 |
#include <Xm/ArrowB.h>
|
|
Packit |
b099d7 |
#include <Xm/ArrowBG.h>
|
|
Packit |
b099d7 |
#include <Xm/DialogS.h>
|
|
Packit |
b099d7 |
#include <Xm/DrawnB.h>
|
|
Packit |
b099d7 |
#include <Xm/LabelG.h>
|
|
Packit |
b099d7 |
#include <Xm/PushB.h>
|
|
Packit |
b099d7 |
#include <Xm/PushBG.h>
|
|
Packit |
b099d7 |
#include <Xm/RowColumnP.h>
|
|
Packit |
b099d7 |
#include <Xm/SeparatoG.h>
|
|
Packit |
b099d7 |
#include <Xm/ToggleB.h>
|
|
Packit |
b099d7 |
#include <Xm/ToggleBG.h>
|
|
Packit |
b099d7 |
#include <Xm/TraitP.h>
|
|
Packit |
b099d7 |
#include <Xm/VendorSP.h> /* for the default display */
|
|
Packit |
b099d7 |
#include <Xm/VaSimpleP.h>
|
|
Packit |
b099d7 |
#include "BulletinBI.h"
|
|
Packit |
b099d7 |
#include "GeoUtilsI.h"
|
|
Packit |
b099d7 |
#include "ImageCachI.h"
|
|
Packit |
b099d7 |
#include "MessageBI.h"
|
|
Packit |
b099d7 |
#include "MessagesI.h"
|
|
Packit |
b099d7 |
#include "RepTypeI.h"
|
|
Packit |
b099d7 |
#include "TraversalI.h"
|
|
Packit |
b099d7 |
#include "XmI.h"
|
|
Packit |
b099d7 |
#include "ScreenI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* convenience macros */
|
|
Packit |
b099d7 |
#define Double(d) ((d) << 1)
|
|
Packit |
b099d7 |
#define TotalWidth(w) ((w)->core.width + Double ((w)->core.border_width))
|
|
Packit |
b099d7 |
#define TotalHeight(w) ((w)->core.height + Double ((w)->core.border_width))
|
|
Packit |
b099d7 |
#define BottomEdge(w) ((w)->core.y + TotalHeight (w))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define IsButton(w) \
|
|
Packit |
b099d7 |
(((XtPointer) XmeTraitGet((XtPointer) XtClass(w), XmQTactivatable) != NULL))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define IsAutoChild(mb, w) ( \
|
|
Packit |
b099d7 |
(w) == mb->message_box.symbol_wid || \
|
|
Packit |
b099d7 |
(w) == mb->message_box.message_wid || \
|
|
Packit |
b099d7 |
(w) == mb->message_box.separator || \
|
|
Packit |
b099d7 |
(w) == mb->message_box.ok_button || \
|
|
Packit |
b099d7 |
(w) == mb->bulletin_board.cancel_button || \
|
|
Packit |
b099d7 |
(w) == mb->message_box.help_button)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ARG_LIST_CNT 25
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define PIXMAP_LIST_MOD 6
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* defines for warning message */
|
|
Packit |
b099d7 |
#define WARNING4 _XmMMsgMessageB_0003
|
|
Packit |
b099d7 |
#define WARNING5 _XmMMsgMessageB_0004
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XImage * CreateDefaultImage(
|
|
Packit |
b099d7 |
char *bits,
|
|
Packit |
b099d7 |
unsigned int width,
|
|
Packit |
b099d7 |
unsigned int height) ;
|
|
Packit |
b099d7 |
static void ClassInitialize( void ) ;
|
|
Packit |
b099d7 |
static void ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass wc) ;
|
|
Packit |
b099d7 |
static void Initialize(
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
static void Destroy(
|
|
Packit |
b099d7 |
Widget wid) ;
|
|
Packit |
b099d7 |
static void DeleteChild(
|
|
Packit |
b099d7 |
Widget child) ;
|
|
Packit |
b099d7 |
static void MessageCallback(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XtPointer closure,
|
|
Packit |
b099d7 |
XtPointer call_data) ;
|
|
Packit |
b099d7 |
static Boolean SetValues(
|
|
Packit |
b099d7 |
Widget cw,
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
static void SetUpSymbol(
|
|
Packit |
b099d7 |
XmMessageBoxWidget w) ;
|
|
Packit |
b099d7 |
static void SetUpMessage(
|
|
Packit |
b099d7 |
XmMessageBoxWidget w) ;
|
|
Packit |
b099d7 |
static void CreateWidgets(
|
|
Packit |
b099d7 |
XmMessageBoxWidget w) ;
|
|
Packit |
b099d7 |
static Widget CreateDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
int ac,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
unsigned int type) ;
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
unsigned char type) ;
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
static void GetMessageString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void GetSymbolPixmap(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void GetOkLabelString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void GetCancelLabelString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void GetHelpLabelString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void GetMsgBoxPixmap(
|
|
Packit |
b099d7 |
XmMessageBoxWidget mBox) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** End Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Resource definitions, "get resources" first */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmSyntheticResource syn_resources[] = {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNmessageString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.message_string),
|
|
Packit |
b099d7 |
GetMessageString,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNsymbolPixmap,
|
|
Packit |
b099d7 |
sizeof (Pixmap),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.symbol_pixmap),
|
|
Packit |
b099d7 |
GetSymbolPixmap,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNokLabelString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.ok_label_string),
|
|
Packit |
b099d7 |
GetOkLabelString,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNcancelLabelString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.cancel_label_string),
|
|
Packit |
b099d7 |
GetCancelLabelString,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhelpLabelString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.help_label_string),
|
|
Packit |
b099d7 |
GetHelpLabelString,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource resources[] = {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNdialogType,
|
|
Packit |
b099d7 |
XmCDialogType,
|
|
Packit |
b099d7 |
XmRDialogType,
|
|
Packit |
b099d7 |
sizeof(unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.dialog_type),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmDIALOG_MESSAGE},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNminimizeButtons,
|
|
Packit |
b099d7 |
XmCMinimizeButtons,
|
|
Packit |
b099d7 |
XmRBoolean,
|
|
Packit |
b099d7 |
sizeof(Boolean),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.minimize_buttons),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) False},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNdefaultButtonType,
|
|
Packit |
b099d7 |
XmCDefaultButtonType,
|
|
Packit |
b099d7 |
XmRDefaultButtonType,
|
|
Packit |
b099d7 |
sizeof(unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.default_type),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmDIALOG_OK_BUTTON},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNmessageString,
|
|
Packit |
b099d7 |
XmCXmString,
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.message_string),
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNmessageAlignment,
|
|
Packit |
b099d7 |
XmCAlignment,
|
|
Packit |
b099d7 |
XmRAlignment,
|
|
Packit |
b099d7 |
sizeof(unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.message_alignment),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmALIGNMENT_BEGINNING},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNsymbolPixmap,
|
|
Packit |
b099d7 |
XmCPixmap,
|
|
Packit |
b099d7 |
XmRDynamicPixmap,
|
|
Packit |
b099d7 |
sizeof (Pixmap),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.symbol_pixmap),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmUNSPECIFIED_PIXMAP},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNokLabelString,
|
|
Packit |
b099d7 |
XmCXmString,
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.ok_label_string),
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
NULL}, /* "OK" default dynamically set from label name */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNokCallback,
|
|
Packit |
b099d7 |
XmCCallback,
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
sizeof (XtCallbackList),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.ok_callback),
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNcancelLabelString,
|
|
Packit |
b099d7 |
XmCXmString,
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.cancel_label_string),
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
NULL}, /* "Cancel" default dynamically set from label name */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNcancelCallback,
|
|
Packit |
b099d7 |
XmCCallback,
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
sizeof (XtCallbackList),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.cancel_callback),
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhelpLabelString,
|
|
Packit |
b099d7 |
XmCXmString,
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmMessageBoxRec, message_box.help_label_string),
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
NULL}, /* "Help" default dynamically set from label name */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Full class record constant
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef( xmmessageboxclassrec) XmMessageBoxClassRec xmMessageBoxClassRec =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{ /* core_class fields */
|
|
Packit |
b099d7 |
(WidgetClass) &xmBulletinBoardClassRec, /* superclass */
|
|
Packit |
b099d7 |
"XmMessageBox", /* class_name */
|
|
Packit |
b099d7 |
sizeof(XmMessageBoxRec), /* widget_size */
|
|
Packit |
b099d7 |
ClassInitialize, /* class_initialize */
|
|
Packit |
b099d7 |
ClassPartInitialize, /* class_part_init */
|
|
Packit |
b099d7 |
FALSE, /* class_inited */
|
|
Packit |
b099d7 |
Initialize, /* initialize */
|
|
Packit |
b099d7 |
NULL, /* initialize_hook */
|
|
Packit |
b099d7 |
XtInheritRealize, /* realize */
|
|
Packit |
b099d7 |
NULL, /* actions */
|
|
Packit |
b099d7 |
0, /* num_actions */
|
|
Packit |
b099d7 |
resources, /* resources */
|
|
Packit |
b099d7 |
XtNumber(resources), /* num_resources */
|
|
Packit |
b099d7 |
NULLQUARK, /* xrm_class */
|
|
Packit |
b099d7 |
TRUE, /* compress_motion */
|
|
Packit |
b099d7 |
XtExposeCompressMaximal, /* compress_exposure */
|
|
Packit |
b099d7 |
FALSE, /* compress_enterlv */
|
|
Packit |
b099d7 |
FALSE, /* visible_interest */
|
|
Packit |
b099d7 |
Destroy, /* destroy */
|
|
Packit |
b099d7 |
XtInheritResize, /* resize */
|
|
Packit |
b099d7 |
XtInheritExpose, /* expose */
|
|
Packit |
b099d7 |
SetValues, /* set_values */
|
|
Packit |
b099d7 |
NULL, /* set_values_hook */
|
|
Packit |
b099d7 |
XtInheritSetValuesAlmost, /* set_values_almost */
|
|
Packit |
b099d7 |
NULL, /* get_values_hook */
|
|
Packit |
b099d7 |
XtInheritAcceptFocus, /* enter_focus */
|
|
Packit |
b099d7 |
XtVersion, /* version */
|
|
Packit |
b099d7 |
NULL, /* callback_private */
|
|
Packit |
b099d7 |
XtInheritTranslations, /* tm_table */
|
|
Packit |
b099d7 |
XtInheritQueryGeometry, /* query_geometry */
|
|
Packit |
b099d7 |
NULL, /* display_accelerator*/
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ /* composite_class fields */
|
|
Packit |
b099d7 |
XtInheritGeometryManager, /* geometry_manager */
|
|
Packit |
b099d7 |
XtInheritChangeManaged, /* change_managed */
|
|
Packit |
b099d7 |
XtInheritInsertChild, /* insert_child */
|
|
Packit |
b099d7 |
DeleteChild, /* delete_child */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ /* constraint_class fields */
|
|
Packit |
b099d7 |
NULL, /* resource list */
|
|
Packit |
b099d7 |
0, /* num resources */
|
|
Packit |
b099d7 |
sizeof(XmManagerConstraintRec), /* constraint size */
|
|
Packit |
b099d7 |
NULL, /* init proc */
|
|
Packit |
b099d7 |
NULL, /* destroy proc */
|
|
Packit |
b099d7 |
NULL, /* set values proc */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ /* manager_class fields */
|
|
Packit |
b099d7 |
XmInheritTranslations, /* translations */
|
|
Packit |
b099d7 |
syn_resources, /* syn_resources */
|
|
Packit |
b099d7 |
XtNumber(syn_resources), /* num_syn_resources */
|
|
Packit |
b099d7 |
NULL, /* syn_cont_resources */
|
|
Packit |
b099d7 |
0, /* num_syn_cont_resources */
|
|
Packit |
b099d7 |
XmInheritParentProcess, /* parent_process */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ /* bulletinBoard class */
|
|
Packit |
b099d7 |
TRUE, /*always_install_accelerators*/
|
|
Packit |
b099d7 |
_XmMessageBoxGeoMatrixCreate, /* geo__matrix_create */
|
|
Packit |
b099d7 |
XmInheritFocusMovedProc, /* focus_moved_proc */
|
|
Packit |
b099d7 |
NULL /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ /* messageBox class */
|
|
Packit |
b099d7 |
(XtPointer) NULL /* extension */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef( xmmessageboxwidgetclass) WidgetClass xmMessageBoxWidgetClass
|
|
Packit |
b099d7 |
= (WidgetClass) &xmMessageBoxClassRec ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
* Bitmap Data for Default Symbol
|
|
Packit |
b099d7 |
**********************************<->***********************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst unsigned char errorBits[] = {
|
|
Packit |
b099d7 |
0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0xf0, 0x3a, 0x00, 0x58, 0x55, 0x00,
|
|
Packit |
b099d7 |
0x2c, 0xa0, 0x00, 0x56, 0x40, 0x01, 0xaa, 0x80, 0x02, 0x46, 0x81, 0x01,
|
|
Packit |
b099d7 |
0x8a, 0x82, 0x02, 0x06, 0x85, 0x01, 0x0a, 0x8a, 0x02, 0x06, 0x94, 0x01,
|
|
Packit |
b099d7 |
0x0a, 0xe8, 0x02, 0x14, 0x50, 0x01, 0x28, 0xb0, 0x00, 0xd0, 0x5f, 0x00,
|
|
Packit |
b099d7 |
0xa0, 0x2a, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst unsigned char infoBits[] = {
|
|
Packit |
b099d7 |
0x00, 0x00, 0x78, 0x00, 0x54, 0x00, 0x2c, 0x00, 0x54, 0x00, 0x28, 0x00,
|
|
Packit |
b099d7 |
0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x2a, 0x00, 0x5c, 0x00, 0x28, 0x00,
|
|
Packit |
b099d7 |
0x58, 0x00, 0x28, 0x00, 0x58, 0x00, 0x28, 0x00, 0x58, 0x00, 0x28, 0x00,
|
|
Packit |
b099d7 |
0x58, 0x00, 0xae, 0x01, 0x56, 0x01, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst unsigned char questionBits[] = {
|
|
Packit |
b099d7 |
0xf0, 0x3f, 0x00, 0x58, 0x55, 0x00, 0xac, 0xaa, 0x00, 0xd6, 0x5f, 0x01,
|
|
Packit |
b099d7 |
0xea, 0xbf, 0x02, 0xf6, 0x7f, 0x01, 0xea, 0xba, 0x02, 0xf6, 0x7d, 0x05,
|
|
Packit |
b099d7 |
0xea, 0xba, 0x0a, 0x56, 0x7d, 0x15, 0xaa, 0xbe, 0x1e, 0x56, 0x5f, 0x01,
|
|
Packit |
b099d7 |
0xac, 0xaf, 0x02, 0x58, 0x57, 0x01, 0xb0, 0xaf, 0x00, 0x60, 0x55, 0x01,
|
|
Packit |
b099d7 |
0xa0, 0xaa, 0x00, 0x60, 0x17, 0x00, 0xa0, 0x2f, 0x00, 0x60, 0x17, 0x00,
|
|
Packit |
b099d7 |
0xb0, 0x2a, 0x00, 0x50, 0x55, 0x00};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst unsigned char warningBits[] = {
|
|
Packit |
b099d7 |
0x00, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x56, 0x00, 0x2a, 0x00, 0x56, 0x00,
|
|
Packit |
b099d7 |
0x2a, 0x00, 0x56, 0x00, 0x2c, 0x00, 0x14, 0x00, 0x2c, 0x00, 0x14, 0x00,
|
|
Packit |
b099d7 |
0x2c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x14, 0x00,
|
|
Packit |
b099d7 |
0x2c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst unsigned char workingBits[] = {
|
|
Packit |
b099d7 |
0x00, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0xaa, 0xaa, 0x0a, 0x44, 0x55, 0x06,
|
|
Packit |
b099d7 |
0xcc, 0x2a, 0x02, 0x44, 0x55, 0x06, 0xcc, 0x2a, 0x02, 0x84, 0x15, 0x06,
|
|
Packit |
b099d7 |
0x8c, 0x2a, 0x02, 0x04, 0x15, 0x06, 0x0c, 0x0a, 0x02, 0x04, 0x06, 0x06,
|
|
Packit |
b099d7 |
0x0c, 0x0b, 0x02, 0x84, 0x15, 0x06, 0xcc, 0x2a, 0x02, 0x44, 0x55, 0x06,
|
|
Packit |
b099d7 |
0xcc, 0x2a, 0x02, 0x44, 0x55, 0x06, 0xcc, 0x2a, 0x02, 0x44, 0x55, 0x06,
|
|
Packit |
b099d7 |
0xfe, 0xff, 0x0f, 0x56, 0x55, 0x05, 0x00, 0x00, 0x00};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Create a default images for symbol... used in ClassInitialize.
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
static XImage *
|
|
Packit |
b099d7 |
CreateDefaultImage(
|
|
Packit |
b099d7 |
char *bits,
|
|
Packit |
b099d7 |
unsigned int width,
|
|
Packit |
b099d7 |
unsigned int height )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XImage * image ;
|
|
Packit |
b099d7 |
Display * display = _XmGetDefaultDisplay() ; /* we don't have one here */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmCreateImage(image, display, bits, width, height, LSBFirst);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( image) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassInitialize( void )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XImage *image;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create and install the default images for the symbol */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
image = CreateDefaultImage ((char *)errorBits, 20, 20);
|
|
Packit |
b099d7 |
XmInstallImage (image, "default_xm_error");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
image = CreateDefaultImage ((char *)infoBits, 11, 24);
|
|
Packit |
b099d7 |
XmInstallImage (image, "default_xm_information");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
image = CreateDefaultImage ((char *)questionBits, 22, 22);
|
|
Packit |
b099d7 |
XmInstallImage (image, "default_xm_question");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
image = CreateDefaultImage ((char *)warningBits, 9, 22);
|
|
Packit |
b099d7 |
XmInstallImage (image, "default_xm_warning");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
image = CreateDefaultImage ((char *)workingBits, 21, 23);
|
|
Packit |
b099d7 |
XmInstallImage (image, "default_xm_working");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass wc )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmFastSubclassInit (wc, XmMESSAGE_BOX_BIT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* MessageBox widget specific initialization
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Initialize(
|
|
Packit |
b099d7 |
Widget rw, /* unused */
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args, /* unused */
|
|
Packit |
b099d7 |
Cardinal *num_args ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget new_w = (XmMessageBoxWidget) nw ;
|
|
Packit |
b099d7 |
Widget defaultButton ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
new_w->message_box.message_wid = NULL;
|
|
Packit |
b099d7 |
new_w->message_box.symbol_wid = NULL;
|
|
Packit |
b099d7 |
new_w->message_box.separator = NULL;
|
|
Packit |
b099d7 |
new_w->message_box.ok_button = NULL;
|
|
Packit |
b099d7 |
new_w->bulletin_board.cancel_button = NULL;
|
|
Packit |
b099d7 |
new_w->message_box.help_button = NULL;
|
|
Packit |
b099d7 |
new_w->bulletin_board.default_button = NULL;
|
|
Packit |
b099d7 |
new_w->message_box.internal_pixmap = FALSE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_DIALOG_TYPE,
|
|
Packit |
b099d7 |
new_w->message_box.dialog_type, (Widget) new_w) )
|
|
Packit |
b099d7 |
{ new_w->message_box.dialog_type = XmDIALOG_MESSAGE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_ALIGNMENT,
|
|
Packit |
b099d7 |
new_w->message_box.message_alignment, (Widget) new_w) )
|
|
Packit |
b099d7 |
{ new_w->message_box.message_alignment = XmALIGNMENT_BEGINNING ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CreateWidgets( new_w) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_DEFAULT_BUTTON_TYPE,
|
|
Packit |
b099d7 |
new_w->message_box.default_type, (Widget) new_w) )
|
|
Packit |
b099d7 |
{ new_w->message_box.default_type = XmDIALOG_OK_BUTTON ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
switch( new_w->message_box.default_type )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case XmDIALOG_CANCEL_BUTTON:
|
|
Packit |
b099d7 |
{ defaultButton = new_w->bulletin_board.cancel_button ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_HELP_BUTTON:
|
|
Packit |
b099d7 |
{ defaultButton = new_w->message_box.help_button ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_OK_BUTTON:
|
|
Packit |
b099d7 |
{ defaultButton = new_w->message_box.ok_button ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
{ defaultButton = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( defaultButton )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
BB_DefaultButton( new_w) = defaultButton ;
|
|
Packit |
b099d7 |
new_w->manager.initial_focus = defaultButton ;
|
|
Packit |
b099d7 |
_XmBulletinBoardSetDynDefaultButton( (Widget) new_w, defaultButton) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Destroy the widget specific data structs
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Destroy(
|
|
Packit |
b099d7 |
Widget wid )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget d = (XmMessageBoxWidget) wid ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (d->message_box.symbol_pixmap != XmUNSPECIFIED_PIXMAP)
|
|
Packit |
b099d7 |
&& d->message_box.internal_pixmap )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmDestroyPixmap( d->core.screen, d->message_box.symbol_pixmap) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Set the widget id to NULL for the child widget being destroyed.
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
DeleteChild(
|
|
Packit |
b099d7 |
Widget child )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget mbox ;
|
|
Packit |
b099d7 |
XtWidgetProc delete_child;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( XtIsRectObj( child) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
mbox = (XmMessageBoxWidget) XtParent( child) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Check for which child is getting destroyed and set to NULL.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( child == mbox->message_box.message_wid )
|
|
Packit |
b099d7 |
{ mbox->message_box.message_wid = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( child == mbox->message_box.symbol_wid )
|
|
Packit |
b099d7 |
{ mbox->message_box.symbol_wid = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( child == mbox->message_box.ok_button )
|
|
Packit |
b099d7 |
{ mbox->message_box.ok_button = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( child == mbox->message_box.help_button )
|
|
Packit |
b099d7 |
{ mbox->message_box.help_button = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( child == mbox->message_box.separator )
|
|
Packit |
b099d7 |
{ mbox->message_box.separator = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
_XmProcessLock();
|
|
Packit |
b099d7 |
delete_child = ((XmBulletinBoardWidgetClass) xmBulletinBoardWidgetClass)
|
|
Packit |
b099d7 |
->composite_class.delete_child;
|
|
Packit |
b099d7 |
_XmProcessUnlock();
|
|
Packit |
b099d7 |
(*delete_child)(child) ;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
MessageCallback(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XtPointer closure,
|
|
Packit |
b099d7 |
XtPointer call_data )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget tag = (XmMessageBoxWidget) closure ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmAnyCallbackStruct temp;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (call_data) {
|
|
Packit |
b099d7 |
temp.reason = ((XmAnyCallbackStruct *) call_data)->reason;
|
|
Packit |
b099d7 |
temp.event = ((XmAnyCallbackStruct *) call_data)->event;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
temp.reason = 0;
|
|
Packit |
b099d7 |
temp.event = NULL;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (tag->message_box.ok_button == w) {
|
|
Packit |
b099d7 |
temp.reason = XmCR_OK;
|
|
Packit |
b099d7 |
XtCallCallbackList ((Widget) tag, tag->message_box.ok_callback, &temp);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (tag->bulletin_board.cancel_button == w) {
|
|
Packit |
b099d7 |
temp.reason = XmCR_CANCEL;
|
|
Packit |
b099d7 |
XtCallCallbackList ((Widget) tag, tag->message_box.cancel_callback, &temp);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (tag->message_box.help_button == w) {
|
|
Packit |
b099d7 |
temp.reason = XmCR_HELP;
|
|
Packit |
b099d7 |
XtCallCallbackList ((Widget) tag, tag->manager.help_callback, &temp);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Set attributes of a message widget
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
SetValues(
|
|
Packit |
b099d7 |
Widget cw,
|
|
Packit |
b099d7 |
Widget rw, /* unused */
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args, /* unused */
|
|
Packit |
b099d7 |
Cardinal *num_args ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget current = (XmMessageBoxWidget) cw ;
|
|
Packit |
b099d7 |
XmMessageBoxWidget new_w = (XmMessageBoxWidget) nw ;
|
|
Packit |
b099d7 |
Arg al[ARG_LIST_CNT] ; /* arg list */
|
|
Packit |
b099d7 |
Cardinal ac ; /* arg list count */
|
|
Packit |
b099d7 |
Boolean need_layout = FALSE ;
|
|
Packit |
b099d7 |
Boolean newPixmap = FALSE ;
|
|
Packit |
b099d7 |
Widget defaultButton ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* "in_set_values" means the GeometryManager won't try to resize
|
|
Packit |
b099d7 |
* and/or re-layout subwidgets.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
BB_InSetValues( new_w) = True;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* fix for CR 5895 */
|
|
Packit |
b099d7 |
if( !new_w->message_box.symbol_pixmap )
|
|
Packit |
b099d7 |
{ new_w->message_box.symbol_pixmap = XmUNSPECIFIED_PIXMAP ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Over-ride BBoard to disallow a direct change of button id's
|
|
Packit |
b099d7 |
* unless it's a template dialog. For those, if you can't set it
|
|
Packit |
b099d7 |
* here then you can never set it.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ( ( current->message_box.dialog_type != XmDIALOG_TEMPLATE ) &&
|
|
Packit |
b099d7 |
( current->bulletin_board.cancel_button !=
|
|
Packit |
b099d7 |
new_w->bulletin_board.cancel_button ) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w->bulletin_board.cancel_button
|
|
Packit |
b099d7 |
= current->bulletin_board.cancel_button;
|
|
Packit |
b099d7 |
XmeWarning( (Widget) new_w, WARNING5);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (current->message_box.dialog_type != new_w->message_box.dialog_type)
|
|
Packit |
b099d7 |
&& !XmRepTypeValidValue( XmRID_DIALOG_TYPE,
|
|
Packit |
b099d7 |
new_w->message_box.dialog_type, (Widget) new_w) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w->message_box.dialog_type = current->message_box.dialog_type ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( new_w->message_box.symbol_pixmap
|
|
Packit |
b099d7 |
!= current->message_box.symbol_pixmap )
|
|
Packit |
b099d7 |
{ newPixmap = TRUE ;
|
|
Packit |
b099d7 |
new_w->message_box.internal_pixmap = FALSE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (current->message_box.symbol_pixmap != XmUNSPECIFIED_PIXMAP)
|
|
Packit |
b099d7 |
&& current->message_box.internal_pixmap )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmDestroyPixmap( current->core.screen,
|
|
Packit |
b099d7 |
current->message_box.symbol_pixmap) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ /* If symbol pixmap is unchanged and a new dialog type is specified,
|
|
Packit |
b099d7 |
* then set to default pixmap.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( new_w->message_box.dialog_type
|
|
Packit |
b099d7 |
!= current->message_box.dialog_type )
|
|
Packit |
b099d7 |
{ newPixmap = TRUE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
GetMsgBoxPixmap( new_w) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (current->message_box.symbol_pixmap != XmUNSPECIFIED_PIXMAP)
|
|
Packit |
b099d7 |
&& current->message_box.internal_pixmap )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmDestroyPixmap( current->core.screen,
|
|
Packit |
b099d7 |
current->message_box.symbol_pixmap) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( newPixmap )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
need_layout = TRUE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* CR 7596, create child widget if needed */
|
|
Packit |
b099d7 |
if( ! new_w->message_box.symbol_wid ) {
|
|
Packit |
b099d7 |
SetUpSymbol(new_w);
|
|
Packit |
b099d7 |
XtManageChild(new_w->message_box.symbol_wid);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ac = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNlabelPixmap,
|
|
Packit |
b099d7 |
new_w->message_box.symbol_pixmap) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetValues( new_w->message_box.symbol_wid, al, ac) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Check the buttons and labels
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
ac = 0 ;
|
|
Packit |
b099d7 |
if( new_w->message_box.message_string )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNlabelString,
|
|
Packit |
b099d7 |
new_w->message_box.message_string) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNstringDirection,
|
|
Packit |
b099d7 |
BB_StringDirection( new_w)) ; ++ac ;
|
|
Packit |
b099d7 |
new_w->message_box.message_string = NULL ;
|
|
Packit |
b099d7 |
need_layout = TRUE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( current->message_box.message_alignment
|
|
Packit |
b099d7 |
!= new_w->message_box.message_alignment )
|
|
Packit |
b099d7 |
{ if( !XmRepTypeValidValue( XmRID_ALIGNMENT,
|
|
Packit |
b099d7 |
new_w->message_box.message_alignment, (Widget) new_w) )
|
|
Packit |
b099d7 |
{ new_w->message_box.message_alignment
|
|
Packit |
b099d7 |
= current->message_box.message_alignment ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ XtSetArg( al[ac], XmNalignment,
|
|
Packit |
b099d7 |
new_w->message_box.message_alignment) ; ++ac ;
|
|
Packit |
b099d7 |
need_layout = TRUE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* CR 7596, create message widget if not there */
|
|
Packit |
b099d7 |
if ( ! new_w->message_box.message_wid ) {
|
|
Packit |
b099d7 |
SetUpMessage(new_w);
|
|
Packit |
b099d7 |
XtManageChild(new_w->message_box.message_wid);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtSetValues( new_w->message_box.message_wid, al, ac) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( new_w->message_box.ok_label_string )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( new_w->message_box.ok_button )
|
|
Packit |
b099d7 |
{ ac = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNlabelString,
|
|
Packit |
b099d7 |
new_w->message_box.ok_label_string) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNstringDirection,
|
|
Packit |
b099d7 |
BB_StringDirection( new_w)) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetValues( new_w->message_box.ok_button, al, ac) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
new_w->message_box.ok_label_string = NULL ;
|
|
Packit |
b099d7 |
need_layout = TRUE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( new_w->message_box.cancel_label_string )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( new_w->bulletin_board.cancel_button )
|
|
Packit |
b099d7 |
{ ac = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNlabelString,
|
|
Packit |
b099d7 |
new_w->message_box.cancel_label_string) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNstringDirection,
|
|
Packit |
b099d7 |
BB_StringDirection( new_w)) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetValues( new_w->bulletin_board.cancel_button, al, ac) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
new_w->message_box.cancel_label_string = NULL ;
|
|
Packit |
b099d7 |
need_layout = TRUE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( new_w->message_box.help_label_string )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( new_w->message_box.help_button )
|
|
Packit |
b099d7 |
{ ac = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNlabelString,
|
|
Packit |
b099d7 |
new_w->message_box.help_label_string) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetArg( al[ac], XmNstringDirection,
|
|
Packit |
b099d7 |
BB_StringDirection( new_w)) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetValues( new_w->message_box.help_button, al, ac) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
new_w->message_box.help_label_string = NULL ;
|
|
Packit |
b099d7 |
need_layout = TRUE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* If Default Pushbutton changes, reset showAsDefault.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( current->message_box.default_type
|
|
Packit |
b099d7 |
!= new_w->message_box.default_type )
|
|
Packit |
b099d7 |
{ if( !XmRepTypeValidValue( XmRID_DEFAULT_BUTTON_TYPE,
|
|
Packit |
b099d7 |
new_w->message_box.default_type, (Widget) new_w) )
|
|
Packit |
b099d7 |
{ new_w->message_box.default_type
|
|
Packit |
b099d7 |
= current->message_box.default_type ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ switch( new_w->message_box.default_type )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case XmDIALOG_CANCEL_BUTTON:
|
|
Packit |
b099d7 |
{ defaultButton = new_w->bulletin_board.cancel_button ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_HELP_BUTTON:
|
|
Packit |
b099d7 |
{ defaultButton = new_w->message_box.help_button ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_OK_BUTTON:
|
|
Packit |
b099d7 |
{ defaultButton = new_w->message_box.ok_button ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
{ defaultButton = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
BB_DefaultButton( new_w) = defaultButton ;
|
|
Packit |
b099d7 |
_XmBulletinBoardSetDynDefaultButton( (Widget) new_w, defaultButton);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (current->manager.initial_focus
|
|
Packit |
b099d7 |
== BB_DefaultButton( current))
|
|
Packit |
b099d7 |
&& (current->manager.initial_focus
|
|
Packit |
b099d7 |
== new_w->manager.initial_focus) )
|
|
Packit |
b099d7 |
{ new_w->manager.initial_focus = defaultButton ;
|
|
Packit |
b099d7 |
_XmSetInitialOfTabGroup( (Widget) new_w, defaultButton) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
BB_InSetValues( new_w) = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Re-layout the sub-widgets if necessary
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( need_layout
|
|
Packit |
b099d7 |
&& (XtClass( new_w) == xmMessageBoxWidgetClass) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmBulletinBoardSizeUpdate( (Widget) new_w) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return( FALSE) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Set up the icon (pixmap label widget) and the label widget itself.
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SetUpSymbol(
|
|
Packit |
b099d7 |
XmMessageBoxWidget w )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Arg al[ARG_LIST_CNT];
|
|
Packit |
b099d7 |
int ac;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* If no pixmap specified, try to get from bitmap file or default
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( w->message_box.symbol_pixmap == XmUNSPECIFIED_PIXMAP )
|
|
Packit |
b099d7 |
{ GetMsgBoxPixmap( w) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !w->message_box.symbol_pixmap )
|
|
Packit |
b099d7 |
{ w->message_box.symbol_pixmap = XmUNSPECIFIED_PIXMAP ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Create symbol label even if no pixmap specified; allows SetValues
|
|
Packit |
b099d7 |
* on dialogType to make pixmap appear in what starts as message box.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
ac = 0;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNwidth, 0); ac++;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNheight, 0); ac++;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNlabelType, XmPIXMAP); ac++;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNlabelPixmap, w->message_box.symbol_pixmap); ac++;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNtraversalOn, False); ac++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
w->message_box.symbol_wid = XmCreateLabelGadget( (Widget) w, "Symbol",
|
|
Packit |
b099d7 |
al, ac);
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Set up the message label (assumes none set yet).
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SetUpMessage(
|
|
Packit |
b099d7 |
XmMessageBoxWidget w )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Arg al[ARG_LIST_CNT];
|
|
Packit |
b099d7 |
int ac;
|
|
Packit |
b099d7 |
XmString empty_string = NULL ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* set up y value dependent on symbol_wid */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ac = 0;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNalignment, w->message_box.message_alignment); ac++;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNborderWidth, 0); ac++;
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNtraversalOn, False); ac++;
|
|
Packit |
b099d7 |
if (w->message_box.message_string) {
|
|
Packit |
b099d7 |
XtSetArg(al[ac], XmNlabelString, w->message_box.message_string); ac++;
|
|
Packit |
b099d7 |
w->message_box.message_string = NULL;
|
|
Packit |
b099d7 |
} else {
|
|
Packit |
b099d7 |
/* we don't want "Message", the name of the label, to become
|
|
Packit |
b099d7 |
the label string, it would break the AES */
|
|
Packit |
b099d7 |
/* BEGIN OSF Fix CR 4847 */
|
|
Packit |
b099d7 |
empty_string = XmStringCreateLocalized(XmS);
|
|
Packit |
b099d7 |
/* END OSF Fix CR 4847 */
|
|
Packit |
b099d7 |
XtSetArg(al[ac], XmNlabelString, empty_string); ac++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XtSetArg (al[ac], XmNstringDirection, BB_StringDirection( w)) ;
|
|
Packit |
b099d7 |
ac++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
w->message_box.message_wid = XmCreateLabelGadget( (Widget) w, "Message",
|
|
Packit |
b099d7 |
al, ac);
|
|
Packit |
b099d7 |
/* BEGIN OSF Fix CR 4847 */
|
|
Packit |
b099d7 |
if (empty_string != NULL) XmStringFree(empty_string);
|
|
Packit |
b099d7 |
/* END OSF Fix CR 4847 */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
XmGeoMatrix
|
|
Packit |
b099d7 |
_XmMessageBoxGeoMatrixCreate(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
Widget instigator,
|
|
Packit |
b099d7 |
XtWidgetGeometry *desired )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget mb = (XmMessageBoxWidget) wid ;
|
|
Packit |
b099d7 |
XmGeoMatrix geoSpec ;
|
|
Packit |
b099d7 |
register XmGeoRowLayout layoutPtr ;
|
|
Packit |
b099d7 |
register XmKidGeometry boxPtr ;
|
|
Packit |
b099d7 |
XmKidGeometry firstBoxInRow ;
|
|
Packit |
b099d7 |
Widget menubar = NULL;
|
|
Packit |
b099d7 |
Widget workarea = NULL;
|
|
Packit |
b099d7 |
Boolean has_buttons = False;
|
|
Packit |
b099d7 |
Boolean has_message = False;
|
|
Packit |
b099d7 |
Boolean menubar_adjust = False;
|
|
Packit |
b099d7 |
Boolean add_pixmap = False;
|
|
Packit |
b099d7 |
int nrows = 2;
|
|
Packit |
b099d7 |
int nchildren = mb->composite.num_children;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Layout MessageBox XmGeoMatrix.
|
|
Packit |
b099d7 |
* Each row is terminated by leaving an empty XmKidGeometry and
|
|
Packit |
b099d7 |
* moving to the next XmGeoRowLayout.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* identify menu bar and work area children. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < nchildren; i++)
|
|
Packit |
b099d7 |
{ register Widget w = mb->composite.children[i];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( menubar == NULL
|
|
Packit |
b099d7 |
&& XmIsRowColumn(w)
|
|
Packit |
b099d7 |
&& ((XmRowColumnWidget)w)->row_column.type == XmMENU_BAR)
|
|
Packit |
b099d7 |
{ menubar = w;
|
|
Packit |
b099d7 |
nrows += 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if (IsButton(w))
|
|
Packit |
b099d7 |
{ has_buttons = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if (workarea == NULL && !IsAutoChild(mb,w))
|
|
Packit |
b099d7 |
{ workarea = w;
|
|
Packit |
b099d7 |
nrows += 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (has_buttons)
|
|
Packit |
b099d7 |
nrows += 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
geoSpec = _XmGeoMatrixAlloc( nrows, nchildren, 0) ;
|
|
Packit |
b099d7 |
geoSpec->composite = (Widget) mb ;
|
|
Packit |
b099d7 |
geoSpec->instigator = (Widget) instigator ;
|
|
Packit |
b099d7 |
if (desired)
|
|
Packit |
b099d7 |
geoSpec->instig_request = *desired ;
|
|
Packit |
b099d7 |
geoSpec->margin_w = BB_MarginWidth( mb) + mb->manager.shadow_thickness ;
|
|
Packit |
b099d7 |
geoSpec->margin_h = BB_MarginHeight( mb) + mb->manager.shadow_thickness ;
|
|
Packit |
b099d7 |
geoSpec->no_geo_request = _XmMessageBoxNoGeoRequest ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
layoutPtr = &(geoSpec->layouts->row) ;
|
|
Packit |
b099d7 |
boxPtr = geoSpec->boxes ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* menu bar */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( menubar && _XmGeoSetupKid( boxPtr, menubar) )
|
|
Packit |
b099d7 |
{ layoutPtr->fix_up = _XmMenuBarFix ;
|
|
Packit |
b099d7 |
menubar_adjust = True ;
|
|
Packit |
b099d7 |
boxPtr += 2;
|
|
Packit |
b099d7 |
++layoutPtr;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* symbol pixmap and message string */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
firstBoxInRow = boxPtr ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (LayoutIsRtoLM(mb))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->message_box.message_wid) )
|
|
Packit |
b099d7 |
{ has_message = True ;
|
|
Packit |
b099d7 |
++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( (mb->message_box.symbol_pixmap != XmUNSPECIFIED_PIXMAP)
|
|
Packit |
b099d7 |
&& _XmGeoSetupKid( boxPtr, mb->message_box.symbol_wid) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( (mb->message_box.symbol_pixmap != XmUNSPECIFIED_PIXMAP)
|
|
Packit |
b099d7 |
&& _XmGeoSetupKid( boxPtr, mb->message_box.symbol_wid) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->message_box.message_wid) )
|
|
Packit |
b099d7 |
{ has_message = True ;
|
|
Packit |
b099d7 |
++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( boxPtr != firstBoxInRow && (workarea == NULL || has_message) )
|
|
Packit |
b099d7 |
{ if( menubar_adjust )
|
|
Packit |
b099d7 |
{ menubar_adjust = False ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ layoutPtr->space_above = BB_MarginHeight( mb) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
layoutPtr->space_between = BB_MarginWidth( mb) ;
|
|
Packit |
b099d7 |
++boxPtr ;
|
|
Packit |
b099d7 |
++layoutPtr ;
|
|
Packit |
b099d7 |
firstBoxInRow = boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* work area */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (LayoutIsRtoLM(mb) && !has_message && boxPtr != firstBoxInRow)
|
|
Packit |
b099d7 |
{ --boxPtr; /* we want the workarea to the left of the pixmap */
|
|
Packit |
b099d7 |
add_pixmap = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( workarea && _XmGeoSetupKid( boxPtr, workarea) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (add_pixmap)
|
|
Packit |
b099d7 |
if( (mb->message_box.symbol_pixmap != XmUNSPECIFIED_PIXMAP)
|
|
Packit |
b099d7 |
&& _XmGeoSetupKid( boxPtr, mb->message_box.symbol_wid) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( boxPtr != firstBoxInRow )
|
|
Packit |
b099d7 |
{ layoutPtr->fill_mode = XmGEO_EXPAND;
|
|
Packit |
b099d7 |
layoutPtr->fit_mode = XmGEO_PROPORTIONAL;
|
|
Packit |
b099d7 |
if( menubar_adjust )
|
|
Packit |
b099d7 |
{ menubar_adjust = False;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ layoutPtr->space_above = BB_MarginHeight( mb) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
layoutPtr->space_between = BB_MarginWidth(mb);
|
|
Packit |
b099d7 |
layoutPtr->stretch_height = True;
|
|
Packit |
b099d7 |
layoutPtr->even_height = 1;
|
|
Packit |
b099d7 |
boxPtr++;
|
|
Packit |
b099d7 |
++layoutPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* separator */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->message_box.separator) )
|
|
Packit |
b099d7 |
{ layoutPtr->fix_up = _XmSeparatorFix ;
|
|
Packit |
b099d7 |
layoutPtr->space_above = BB_MarginHeight( mb) ;
|
|
Packit |
b099d7 |
boxPtr += 2 ;
|
|
Packit |
b099d7 |
++layoutPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* buttons */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (LayoutIsRtoLM(mb))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->message_box.help_button) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->bulletin_board.cancel_button) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i = 0; i < nchildren; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register Widget w = mb->composite.children[nchildren-i-1];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !IsAutoChild(mb,w) && IsButton(w) && _XmGeoSetupKid(boxPtr, w) )
|
|
Packit |
b099d7 |
{ ++boxPtr;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->message_box.ok_button) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->message_box.ok_button) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
for (i = 0; i < nchildren; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register Widget w = mb->composite.children[i];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !IsAutoChild(mb,w) && IsButton(w) && _XmGeoSetupKid(boxPtr, w) )
|
|
Packit |
b099d7 |
{ ++boxPtr;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->bulletin_board.cancel_button) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( _XmGeoSetupKid( boxPtr, mb->message_box.help_button) )
|
|
Packit |
b099d7 |
{ ++boxPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( has_buttons )
|
|
Packit |
b099d7 |
{ layoutPtr->fill_mode = XmGEO_CENTER ;
|
|
Packit |
b099d7 |
layoutPtr->fit_mode = XmGEO_WRAP ;
|
|
Packit |
b099d7 |
if( !mb->message_box.minimize_buttons )
|
|
Packit |
b099d7 |
{ layoutPtr->even_width = 1 ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
layoutPtr->even_height = 1 ;
|
|
Packit |
b099d7 |
layoutPtr->space_above = BB_MarginHeight( mb) ;
|
|
Packit |
b099d7 |
++layoutPtr ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* end */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
layoutPtr->space_above = BB_MarginHeight( mb) ;
|
|
Packit |
b099d7 |
layoutPtr->end = TRUE ;
|
|
Packit |
b099d7 |
return( geoSpec) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Boolean
|
|
Packit |
b099d7 |
_XmMessageBoxNoGeoRequest(
|
|
Packit |
b099d7 |
XmGeoMatrix geoSpec )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( BB_InSetValues( geoSpec->composite)
|
|
Packit |
b099d7 |
&& (XtClass( geoSpec->composite) == xmMessageBoxWidgetClass) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return( TRUE) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return( FALSE) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Construct the required captive widgets for the box. Don't worry about
|
|
Packit |
b099d7 |
* positioning since a layout will happen later on.
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
CreateWidgets(
|
|
Packit |
b099d7 |
XmMessageBoxWidget w )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Arg al[2];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create the symbol label */
|
|
Packit |
b099d7 |
if (!(w->message_box.dialog_type == XmDIALOG_TEMPLATE &&
|
|
Packit |
b099d7 |
w->message_box.symbol_pixmap == XmUNSPECIFIED_PIXMAP))
|
|
Packit |
b099d7 |
SetUpSymbol (w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create the message label, after symbol is created */
|
|
Packit |
b099d7 |
if (!(w->message_box.dialog_type == XmDIALOG_TEMPLATE &&
|
|
Packit |
b099d7 |
w->message_box.message_string == NULL))
|
|
Packit |
b099d7 |
SetUpMessage (w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create the separator */
|
|
Packit |
b099d7 |
XtSetArg (al[0], XmNhighlightThickness, 0);
|
|
Packit |
b099d7 |
w->message_box.separator = XmCreateSeparatorGadget( (Widget) w,
|
|
Packit |
b099d7 |
"Separator", al, 1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create all pushbuttons, user can unmanage if they don't want them */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* "Ok" button... if no label, use default localized "OK" string from
|
|
Packit |
b099d7 |
message catalog, or "OK" if no message catatlog, for label */
|
|
Packit |
b099d7 |
if (!(w->message_box.dialog_type == XmDIALOG_TEMPLATE &&
|
|
Packit |
b099d7 |
w->message_box.ok_label_string == NULL &&
|
|
Packit |
b099d7 |
w->message_box.ok_callback == NULL))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
w->message_box.ok_button = _XmBB_CreateButtonG( (Widget) w,
|
|
Packit |
b099d7 |
w->message_box.ok_label_string, "OK",
|
|
Packit |
b099d7 |
XmOkStringLoc) ;
|
|
Packit |
b099d7 |
w->message_box.ok_label_string = NULL;
|
|
Packit |
b099d7 |
XtAddCallback( w->message_box.ok_button, XmNactivateCallback,
|
|
Packit |
b099d7 |
MessageCallback, (XtPointer) w) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/* "Cancel" button... if no label, use default localized "Cancel" string from
|
|
Packit |
b099d7 |
message catalog, or "Cancel" if no message catalog, for label */
|
|
Packit |
b099d7 |
if (!(w->message_box.dialog_type == XmDIALOG_TEMPLATE &&
|
|
Packit |
b099d7 |
w->message_box.cancel_label_string == NULL &&
|
|
Packit |
b099d7 |
w->message_box.cancel_callback == NULL))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
w->bulletin_board.cancel_button = _XmBB_CreateButtonG( (Widget) w,
|
|
Packit |
b099d7 |
w->message_box.cancel_label_string, "Cancel",
|
|
Packit |
b099d7 |
XmCancelStringLoc) ;
|
|
Packit |
b099d7 |
w->message_box.cancel_label_string = NULL;
|
|
Packit |
b099d7 |
XtAddCallback( w->bulletin_board.cancel_button, XmNactivateCallback,
|
|
Packit |
b099d7 |
MessageCallback, (XtPointer) w) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/* "Help" button... if no label, use default localized "Help" string from
|
|
Packit |
b099d7 |
message catalog, or "Help" if no message catalog, for label */
|
|
Packit |
b099d7 |
if (!(w->message_box.dialog_type == XmDIALOG_TEMPLATE &&
|
|
Packit |
b099d7 |
w->message_box.help_label_string == NULL &&
|
|
Packit |
b099d7 |
w->manager.help_callback == NULL))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
w->message_box.help_button = _XmBB_CreateButtonG( (Widget) w,
|
|
Packit |
b099d7 |
w->message_box.help_label_string, "Help",
|
|
Packit |
b099d7 |
XmHelpStringLoc) ;
|
|
Packit |
b099d7 |
w->message_box.help_label_string = NULL;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Remove BulletinBoard Unmanage callback from help button.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XtRemoveAllCallbacks( w->message_box.help_button, XmNactivateCallback) ;
|
|
Packit |
b099d7 |
XtAddCallback( w->message_box.help_button, XmNactivateCallback,
|
|
Packit |
b099d7 |
MessageCallback, (XtPointer) w) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/* Now manage all my children.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XtManageChildren (w->composite.children, w->composite.num_children);
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Common create routine for message dialogs...
|
|
Packit |
b099d7 |
* it will create the shell and widgets, and set the dialog_type to
|
|
Packit |
b099d7 |
* whatever has been passed in...
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
static Widget
|
|
Packit |
b099d7 |
CreateDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
int ac,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
unsigned int type )
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
unsigned char type ) /* type of dialog being created */
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Widget w;
|
|
Packit |
b099d7 |
ArgList argsNew;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* add dialogType to arglist and force to type passed in... */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* allocate arglist, copy args, add dialog type arg */
|
|
Packit |
b099d7 |
argsNew = (ArgList) XtMalloc (sizeof(Arg) * (ac + 1));
|
|
Packit |
b099d7 |
memcpy( argsNew, al, sizeof(Arg) * ac);
|
|
Packit |
b099d7 |
XtSetArg (argsNew[ac], XmNdialogType, type); ac++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create MessageBoxDialog free argsNew, return */
|
|
Packit |
b099d7 |
w = XmeCreateClassDialog (xmMessageBoxWidgetClass,
|
|
Packit |
b099d7 |
parent, name, argsNew, ac) ;
|
|
Packit |
b099d7 |
XtFree((char*)argsNew);
|
|
Packit |
b099d7 |
return w ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateMessageBox(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return XtCreateWidget (name, xmMessageBoxWidgetClass, parent, al, ac);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmVaCreateMessageBox(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
...)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register Widget w;
|
|
Packit |
b099d7 |
va_list var;
|
|
Packit |
b099d7 |
int count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var,name);
|
|
Packit |
b099d7 |
count = XmeCountVaListSimple(var);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var, name);
|
|
Packit |
b099d7 |
w = XmeVLCreateWidget(name,
|
|
Packit |
b099d7 |
xmMessageBoxWidgetClass,
|
|
Packit |
b099d7 |
parent, False,
|
|
Packit |
b099d7 |
var, count);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
return w;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmVaCreateManagedMessageBox(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
...)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Widget w = NULL;
|
|
Packit |
b099d7 |
va_list var;
|
|
Packit |
b099d7 |
int count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var, name);
|
|
Packit |
b099d7 |
count = XmeCountVaListSimple(var);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var, name);
|
|
Packit |
b099d7 |
w = XmeVLCreateWidget(name,
|
|
Packit |
b099d7 |
xmMessageBoxWidgetClass,
|
|
Packit |
b099d7 |
parent, True,
|
|
Packit |
b099d7 |
var, count);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
return w;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateMessageDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return CreateDialog (parent, name, al, ac, XmDIALOG_MESSAGE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateErrorDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return CreateDialog (parent, name, al, ac, XmDIALOG_ERROR);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateInformationDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return CreateDialog (parent, name, al, ac, XmDIALOG_INFORMATION);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateQuestionDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return CreateDialog (parent, name, al, ac, XmDIALOG_QUESTION);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateWarningDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return CreateDialog (parent, name, al, ac, XmDIALOG_WARNING);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateWorkingDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return CreateDialog (parent, name, al, ac, XmDIALOG_WORKING);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateTemplateDialog(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return CreateDialog (parent, name, al, ac, XmDIALOG_TEMPLATE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmMessageBoxGetChild(
|
|
Packit |
b099d7 |
Widget widget,
|
|
Packit |
b099d7 |
#if NeedWidePrototypes
|
|
Packit |
b099d7 |
unsigned int child )
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
unsigned char child )
|
|
Packit |
b099d7 |
#endif /* NeedWidePrototypes */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget w = (XmMessageBoxWidget)widget;
|
|
Packit |
b099d7 |
Widget child_widget = NULL;
|
|
Packit |
b099d7 |
_XmWidgetToAppContext(widget);
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAppLock(app);
|
|
Packit |
b099d7 |
switch (child) {
|
|
Packit |
b099d7 |
case XmDIALOG_DEFAULT_BUTTON:
|
|
Packit |
b099d7 |
child_widget = w->bulletin_board.default_button;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_SYMBOL_LABEL:
|
|
Packit |
b099d7 |
child_widget = w->message_box.symbol_wid;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_MESSAGE_LABEL:
|
|
Packit |
b099d7 |
child_widget = w->message_box.message_wid;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_OK_BUTTON:
|
|
Packit |
b099d7 |
child_widget = w->message_box.ok_button;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_CANCEL_BUTTON:
|
|
Packit |
b099d7 |
child_widget = w->bulletin_board.cancel_button;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_HELP_BUTTON:
|
|
Packit |
b099d7 |
child_widget = w->message_box.help_button;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_SEPARATOR:
|
|
Packit |
b099d7 |
child_widget = w->message_box.separator;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
XmeWarning( (Widget) w, WARNING4); break ;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return child_widget ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetMessageString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget w = (XmMessageBoxWidget) wid ;
|
|
Packit |
b099d7 |
XmString data;
|
|
Packit |
b099d7 |
Arg al[1];
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w->message_box.message_wid) {
|
|
Packit |
b099d7 |
XtSetArg (al[0], XmNlabelString, &data);
|
|
Packit |
b099d7 |
XtGetValues (w->message_box.message_wid, al, 1);
|
|
Packit |
b099d7 |
*value = (XtArgVal) data;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else *value = (XtArgVal) NULL;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetSymbolPixmap(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget w = (XmMessageBoxWidget) wid ;
|
|
Packit |
b099d7 |
Pixmap data;
|
|
Packit |
b099d7 |
Arg al[1];
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w->message_box.symbol_wid) {
|
|
Packit |
b099d7 |
XtSetArg (al[0], XmNlabelPixmap, &data);
|
|
Packit |
b099d7 |
XtGetValues (w->message_box.symbol_wid, al, 1);
|
|
Packit |
b099d7 |
*value = (XtArgVal) data;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else *value = (XtArgVal) NULL;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetOkLabelString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget w = (XmMessageBoxWidget) wid ;
|
|
Packit |
b099d7 |
XmString data;
|
|
Packit |
b099d7 |
Arg al[1];
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w->message_box.ok_button) {
|
|
Packit |
b099d7 |
XtSetArg (al[0], XmNlabelString, &data);
|
|
Packit |
b099d7 |
XtGetValues (w->message_box.ok_button, al, 1);
|
|
Packit |
b099d7 |
*value = (XtArgVal) data;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else *value = (XtArgVal) NULL;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetCancelLabelString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget w = (XmMessageBoxWidget) wid ;
|
|
Packit |
b099d7 |
XmString data;
|
|
Packit |
b099d7 |
Arg al[1];
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w->bulletin_board.cancel_button) {
|
|
Packit |
b099d7 |
XtSetArg (al[0], XmNlabelString, &data);
|
|
Packit |
b099d7 |
XtGetValues (w->bulletin_board.cancel_button, al, 1);
|
|
Packit |
b099d7 |
*value = (XtArgVal) data;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else *value = (XtArgVal) NULL;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetHelpLabelString(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
int resource_offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmMessageBoxWidget w = (XmMessageBoxWidget) wid ;
|
|
Packit |
b099d7 |
XmString data;
|
|
Packit |
b099d7 |
Arg al[1];
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (w->message_box.help_button) {
|
|
Packit |
b099d7 |
XtSetArg (al[0], XmNlabelString, &data);
|
|
Packit |
b099d7 |
XtGetValues (w->message_box.help_button, al, 1);
|
|
Packit |
b099d7 |
*value = (XtArgVal) data;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else *value = (XtArgVal) NULL;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetMsgBoxPixmap(
|
|
Packit |
b099d7 |
XmMessageBoxWidget mBox )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Pixmap tmpPix = XmUNSPECIFIED_PIXMAP ;
|
|
Packit |
b099d7 |
char * fileName ;
|
|
Packit |
b099d7 |
char * defaultName ;
|
|
Packit |
b099d7 |
XmAccessColorDataRec acc_color_rec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Try to get pixmap from bitmap file or default.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
switch( mBox->message_box.dialog_type ) {
|
|
Packit |
b099d7 |
case XmDIALOG_ERROR:
|
|
Packit |
b099d7 |
{ fileName = "xm_error" ;
|
|
Packit |
b099d7 |
defaultName = "default_xm_error" ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_INFORMATION:
|
|
Packit |
b099d7 |
{ fileName = "xm_information" ;
|
|
Packit |
b099d7 |
defaultName = "default_xm_information" ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_QUESTION:
|
|
Packit |
b099d7 |
{ fileName = "xm_question" ;
|
|
Packit |
b099d7 |
defaultName = "default_xm_question" ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_WARNING:
|
|
Packit |
b099d7 |
{ fileName = "xm_warning" ;
|
|
Packit |
b099d7 |
defaultName = "default_xm_warning" ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
case XmDIALOG_WORKING:
|
|
Packit |
b099d7 |
{ fileName = "xm_working" ;
|
|
Packit |
b099d7 |
defaultName = "default_xm_working" ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
{ fileName = NULL ;
|
|
Packit |
b099d7 |
defaultName = NULL ;
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( fileName ){
|
|
Packit |
b099d7 |
int depth ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (_XmGetBitmapConversionModel(XtScreen((Widget)mBox))
|
|
Packit |
b099d7 |
== XmMATCH_DEPTH)
|
|
Packit |
b099d7 |
/* we want pixmap out of xbm, use the plain depth*/
|
|
Packit |
b099d7 |
depth = mBox->core.depth ;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
/* we want bitmap out of xbm, use the private convention */
|
|
Packit |
b099d7 |
depth = -mBox->core.depth ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* use full color spec, so that one can take advantage of
|
|
Packit |
b099d7 |
symbolic shadow in the symbol pixmap */
|
|
Packit |
b099d7 |
acc_color_rec.foreground = mBox->manager.foreground ;
|
|
Packit |
b099d7 |
acc_color_rec.background = mBox->core.background_pixel ;
|
|
Packit |
b099d7 |
acc_color_rec.top_shadow_color = mBox->manager.top_shadow_color ;
|
|
Packit |
b099d7 |
acc_color_rec.bottom_shadow_color = mBox->manager.bottom_shadow_color ;
|
|
Packit |
b099d7 |
acc_color_rec.highlight_color = mBox->manager.highlight_color ;
|
|
Packit |
b099d7 |
acc_color_rec.select_color = XmUNSPECIFIED_PIXEL ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmpPix = _XmGetScaledPixmap(mBox->core.screen, (Widget)mBox,
|
|
Packit |
b099d7 |
fileName,
|
|
Packit |
b099d7 |
&acc_color_rec, depth, FALSE, 0) ;
|
|
Packit |
b099d7 |
if( tmpPix == XmUNSPECIFIED_PIXMAP ) {
|
|
Packit |
b099d7 |
tmpPix = _XmGetScaledPixmap(mBox->core.screen, (Widget)mBox,
|
|
Packit |
b099d7 |
defaultName,
|
|
Packit |
b099d7 |
&acc_color_rec, depth, FALSE, 0) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
mBox->message_box.symbol_pixmap = tmpPix ;
|
|
Packit |
b099d7 |
mBox->message_box.internal_pixmap = TRUE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|