|
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 REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$TOG: Command.c /main/21 1999/01/26 18:12:51 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 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#include "XmI.h"
|
|
Packit |
b099d7 |
#include "CommandI.h"
|
|
Packit |
b099d7 |
#include <Xm/DialogS.h>
|
|
Packit |
b099d7 |
#include <Xm/List.h>
|
|
Packit |
b099d7 |
#include <Xm/TextF.h>
|
|
Packit |
b099d7 |
#include <Xm/VaSimpleP.h>
|
|
Packit |
b099d7 |
#include "BulletinBI.h"
|
|
Packit |
b099d7 |
#include "MessagesI.h"
|
|
Packit |
b099d7 |
#include "RepTypeI.h"
|
|
Packit |
b099d7 |
#include "SelectioBI.h"
|
|
Packit |
b099d7 |
#include "XmStringI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <string.h>
|
|
Packit |
b099d7 |
#ifndef X_NOT_STDC_ENV
|
|
Packit |
b099d7 |
#include <stdlib.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ARG_LIST_CNT 25
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* defines for warning messages */
|
|
Packit |
b099d7 |
#define WARNING1 _XmMMsgCommand_0000
|
|
Packit |
b099d7 |
#define WARNING2 _XmMMsgCommand_0001
|
|
Packit |
b099d7 |
#define WARNING3 _XmMMsgCommand_0002
|
|
Packit |
b099d7 |
#define WARNING4 _XmMMsgCommand_0003
|
|
Packit |
b099d7 |
#define WARNING5 _XmMMsgCommand_0004
|
|
Packit |
b099d7 |
#define WARNING6 _XmMMsgCommand_0005
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
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 ListCallback(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XtPointer client_data,
|
|
Packit |
b099d7 |
XtPointer call_data) ;
|
|
Packit |
b099d7 |
static void CommandCallback(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
XtPointer cl_data,
|
|
Packit |
b099d7 |
XtPointer call_data) ;
|
|
Packit |
b099d7 |
static Boolean CommandParentProcess(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XmParentProcessData event) ;
|
|
Packit |
b099d7 |
static void Resize(
|
|
Packit |
b099d7 |
Widget wid);
|
|
Packit |
b099d7 |
static Boolean SetValues(
|
|
Packit |
b099d7 |
Widget ow,
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** End Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtActionsRec actionsList[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{ "Return", _XmCommandReturn }, /* Motif 1.0 */
|
|
Packit |
b099d7 |
{ "UpOrDown", _XmCommandUpOrDown }, /* Motif 1.0 */
|
|
Packit |
b099d7 |
{ "BulletinBoardReturn", _XmCommandReturn },
|
|
Packit |
b099d7 |
{ "SelectionBoxUpOrDown", _XmCommandUpOrDown },
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* define the resource stuff for a command widget */
|
|
Packit |
b099d7 |
static XmSyntheticResource syn_resources[] = {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNpromptString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.selection_label_string),
|
|
Packit |
b099d7 |
_XmSelectionBoxGetSelectionLabelString,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNcommand,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.text_string),
|
|
Packit |
b099d7 |
_XmSelectionBoxGetTextString,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhistoryItems,
|
|
Packit |
b099d7 |
sizeof (XmString *),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.list_items),
|
|
Packit |
b099d7 |
_XmSelectionBoxGetListItems,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhistoryItemCount,
|
|
Packit |
b099d7 |
sizeof(int),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.list_item_count),
|
|
Packit |
b099d7 |
_XmSelectionBoxGetListItemCount,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhistoryVisibleItemCount,
|
|
Packit |
b099d7 |
sizeof(int),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.list_visible_item_count),
|
|
Packit |
b099d7 |
_XmSelectionBoxGetListVisibleItemCount,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource resources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{ XmNcommandEnteredCallback,
|
|
Packit |
b099d7 |
XmCCallback,
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
sizeof (XtCallbackList),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmCommandRec, command.callback),
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
(XtPointer)NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNcommandChangedCallback,
|
|
Packit |
b099d7 |
XmCCallback,
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
sizeof (XtCallbackList),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmCommandRec, command.value_changed_callback),
|
|
Packit |
b099d7 |
XmRCallback,
|
|
Packit |
b099d7 |
(XtPointer) NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNpromptString,
|
|
Packit |
b099d7 |
XmCPromptString,
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.selection_label_string),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmUNSPECIFIED},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNcommand,
|
|
Packit |
b099d7 |
XmCTextString,
|
|
Packit |
b099d7 |
XmRXmString,
|
|
Packit |
b099d7 |
sizeof (XmString),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.text_string),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmUNSPECIFIED},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhistoryItems,
|
|
Packit |
b099d7 |
XmCItems,
|
|
Packit |
b099d7 |
XmRXmStringTable,
|
|
Packit |
b099d7 |
sizeof (XmString *),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.list_items),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
NULL},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhistoryItemCount,
|
|
Packit |
b099d7 |
XmCItemCount,
|
|
Packit |
b099d7 |
XmRInt,
|
|
Packit |
b099d7 |
sizeof(int),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.list_item_count),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmUNSPECIFIED_COUNT},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhistoryMaxItems,
|
|
Packit |
b099d7 |
XmCMaxItems,
|
|
Packit |
b099d7 |
XmRInt,
|
|
Packit |
b099d7 |
sizeof(int),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmCommandRec, command.history_max_items),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) 100},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhistoryVisibleItemCount,
|
|
Packit |
b099d7 |
XmCVisibleItemCount,
|
|
Packit |
b099d7 |
XmRInt,
|
|
Packit |
b099d7 |
sizeof(int),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.list_visible_item_count),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) 8},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNdialogType,
|
|
Packit |
b099d7 |
XmCDialogType,
|
|
Packit |
b099d7 |
XmRSelectionType,
|
|
Packit |
b099d7 |
sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSelectionBoxRec, selection_box.dialog_type),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmDIALOG_COMMAND},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNdefaultPosition,
|
|
Packit |
b099d7 |
XmCDefaultPosition,
|
|
Packit |
b099d7 |
XmRBoolean,
|
|
Packit |
b099d7 |
sizeof (Boolean),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmBulletinBoardRec, bulletin_board.default_position),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) False},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNautoUnmanage,
|
|
Packit |
b099d7 |
XmCAutoUnmanage,
|
|
Packit |
b099d7 |
XmRBoolean,
|
|
Packit |
b099d7 |
sizeof (Boolean),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmBulletinBoardRec, bulletin_board.auto_unmanage),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) False},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNresizePolicy,
|
|
Packit |
b099d7 |
XmCResizePolicy,
|
|
Packit |
b099d7 |
XmRResizePolicy,
|
|
Packit |
b099d7 |
sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmBulletinBoardRec, bulletin_board.resize_policy),
|
|
Packit |
b099d7 |
XmRImmediate,
|
|
Packit |
b099d7 |
(XtPointer) XmRESIZE_NONE},
|
|
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( xmcommandclassrec) XmCommandClassRec xmCommandClassRec =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{ /*core class record */
|
|
Packit |
b099d7 |
(WidgetClass) &xmSelectionBoxClassRec, /* superclass ptr */
|
|
Packit |
b099d7 |
"XmCommand", /* class_name */
|
|
Packit |
b099d7 |
sizeof(XmCommandRec), /* size of widget instance */
|
|
Packit |
b099d7 |
NULL, /* class init proc */
|
|
Packit |
b099d7 |
ClassPartInitialize, /* class part init proc */
|
|
Packit |
b099d7 |
FALSE, /* class is not init'ed */
|
|
Packit |
b099d7 |
Initialize, /* widget init proc */
|
|
Packit |
b099d7 |
NULL, /* widget init hook */
|
|
Packit |
b099d7 |
XtInheritRealize, /* widget realize proc */
|
|
Packit |
b099d7 |
actionsList, /* class action table */
|
|
Packit |
b099d7 |
XtNumber (actionsList), /* class action count */
|
|
Packit |
b099d7 |
resources, /* class resource list */
|
|
Packit |
b099d7 |
XtNumber (resources), /* class resource_count */
|
|
Packit |
b099d7 |
NULLQUARK, /* xrm_class */
|
|
Packit |
b099d7 |
TRUE, /* compressed motion */
|
|
Packit |
b099d7 |
XtExposeCompressSeries, /* compressed exposure */
|
|
Packit |
b099d7 |
TRUE, /* compressed enter/exit */
|
|
Packit |
b099d7 |
FALSE, /* VisibilityNotify */
|
|
Packit |
b099d7 |
NULL, /* class destroy proc */
|
|
Packit |
b099d7 |
Resize, /* class resize proc */
|
|
Packit |
b099d7 |
XtInheritExpose, /* class expose proc */
|
|
Packit |
b099d7 |
SetValues, /* class set_value proc */
|
|
Packit |
b099d7 |
NULL, /* widget setvalues hook */
|
|
Packit |
b099d7 |
XtInheritSetValuesAlmost, /* set values almost */
|
|
Packit |
b099d7 |
NULL, /* widget getvalues hook */
|
|
Packit |
b099d7 |
NULL, /* class accept focus proc */
|
|
Packit |
b099d7 |
XtVersion, /* version */
|
|
Packit |
b099d7 |
NULL, /* callback offset list */
|
|
Packit |
b099d7 |
XtInheritTranslations, /* default translations */
|
|
Packit |
b099d7 |
XtInheritQueryGeometry, /* query geometry */
|
|
Packit |
b099d7 |
NULL, /* Display Accelerator */
|
|
Packit |
b099d7 |
NULL, /* Extension pointer */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /*composite class record */
|
|
Packit |
b099d7 |
XtInheritGeometryManager, /* childrens geo mgr proc */
|
|
Packit |
b099d7 |
XtInheritChangeManaged, /* set changed proc */
|
|
Packit |
b099d7 |
XtInheritInsertChild, /* add a child */
|
|
Packit |
b099d7 |
XtInheritDeleteChild, /* remove a child */
|
|
Packit |
b099d7 |
NULL, /* Extension pointer */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /*constraint class record */
|
|
Packit |
b099d7 |
NULL, /* no additional resources */
|
|
Packit |
b099d7 |
0, /* num additional resources */
|
|
Packit |
b099d7 |
0, /* size of constraint rec */
|
|
Packit |
b099d7 |
NULL, /* constraint_initialize */
|
|
Packit |
b099d7 |
NULL, /* constraint_destroy */
|
|
Packit |
b099d7 |
NULL, /* constraint_setvalue */
|
|
Packit |
b099d7 |
NULL, /* Extension pointer */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /*manager class record */
|
|
Packit |
b099d7 |
XtInheritTranslations, /* default 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 |
CommandParentProcess, /* parent_process */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /*bulletin board class rec */
|
|
Packit |
b099d7 |
TRUE, /*always_install_accelerators*/
|
|
Packit |
b099d7 |
XmInheritGeoMatrixCreate, /* geo_matrix_create */
|
|
Packit |
b099d7 |
XmInheritFocusMovedProc, /* focus_moved_proc */
|
|
Packit |
b099d7 |
NULL /* Extension pointer - none */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /*selection box class rec */
|
|
Packit |
b099d7 |
ListCallback, /* list_callback */
|
|
Packit |
b099d7 |
NULL, /* Extension pointer - none */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /*command class record */
|
|
Packit |
b099d7 |
NULL, /* Extension pointer - none */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* now make a public symbol that points to this class record
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef( xmcommandwidgetclass) WidgetClass xmCommandWidgetClass
|
|
Packit |
b099d7 |
= (WidgetClass) &xmCommandClassRec ;
|
|
Packit |
b099d7 |
|
|
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, XmCOMMAND_BOX_BIT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Set attributes of a command widget
|
|
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 |
XmCommandWidget new_w = (XmCommandWidget) nw ;
|
|
Packit |
b099d7 |
int max;
|
|
Packit |
b099d7 |
Arg argv[5] ;
|
|
Packit |
b099d7 |
Cardinal argc ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Here we have now to take care of XmUNSPECIFIED (CR 4856).
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (new_w->selection_box.selection_label_string ==
|
|
Packit |
b099d7 |
(XmString) XmUNSPECIFIED) {
|
|
Packit |
b099d7 |
XmString local_xmstring ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
local_xmstring = XmStringCreate(">", XmFONTLIST_DEFAULT_TAG);
|
|
Packit |
b099d7 |
argc = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( argv[argc], XmNlabelString, local_xmstring) ; ++argc ;
|
|
Packit |
b099d7 |
XtSetValues( SB_SelectionLabel( new_w), argv, argc) ;
|
|
Packit |
b099d7 |
XmStringFree(local_xmstring);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
new_w->selection_box.selection_label_string = NULL ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* mustMatch does not apply to command... (it is always false) */
|
|
Packit |
b099d7 |
if (new_w->selection_box.must_match != False) {
|
|
Packit |
b099d7 |
new_w->selection_box.must_match = False;
|
|
Packit |
b099d7 |
XmeWarning( (Widget) new_w, WARNING5);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* check for and change max history items (remove items if needed) */
|
|
Packit |
b099d7 |
if (new_w->command.history_max_items < 1) {
|
|
Packit |
b099d7 |
new_w->command.history_max_items = 100;
|
|
Packit |
b099d7 |
XmeWarning( (Widget) new_w, WARNING6);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
argc = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( argv[argc], XmNitemCount, &max) ; ++argc ;
|
|
Packit |
b099d7 |
XtGetValues( SB_List( new_w), argv, argc) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w->command.history_max_items < max)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
while (max > new_w->command.history_max_items) {
|
|
Packit |
b099d7 |
XmListDeletePos (new_w->selection_box.list, 1);
|
|
Packit |
b099d7 |
if (new_w->selection_box.list_selected_item_position > 0)
|
|
Packit |
b099d7 |
new_w->selection_box.list_selected_item_position--;
|
|
Packit |
b099d7 |
max--;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (new_w->selection_box.dialog_type != XmDIALOG_COMMAND)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w->selection_box.dialog_type = XmDIALOG_COMMAND ;
|
|
Packit |
b099d7 |
XmeWarning( (Widget) new_w, WARNING1);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XtAddCallback (new_w->selection_box.text, XmNvalueChangedCallback,
|
|
Packit |
b099d7 |
CommandCallback, (XtPointer) new_w);
|
|
Packit |
b099d7 |
new_w->command.error = FALSE;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Process callback from the List in a SelectionBox.
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ListCallback(
|
|
Packit |
b099d7 |
Widget w, /* unused */
|
|
Packit |
b099d7 |
XtPointer client_data,
|
|
Packit |
b099d7 |
XtPointer call_data )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmListCallbackStruct * listCB = (XmListCallbackStruct *)
|
|
Packit |
b099d7 |
call_data ;
|
|
Packit |
b099d7 |
XmCommandCallbackStruct cmdCB ;
|
|
Packit |
b099d7 |
XmCommandWidget cmdWid = (XmCommandWidget) client_data ;
|
|
Packit |
b099d7 |
char * text_value ;
|
|
Packit |
b099d7 |
Arg argv[5] ;
|
|
Packit |
b099d7 |
Cardinal argc ;
|
|
Packit |
b099d7 |
int count ;
|
|
Packit |
b099d7 |
XmString tmpXmString ;
|
|
Packit |
b099d7 |
/*********** reset is not used ************
|
|
Packit |
b099d7 |
Boolean reset = FALSE ;
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
argc = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( argv[argc], XmNitemCount, &count) ; ++argc ;
|
|
Packit |
b099d7 |
XtGetValues( SB_List( cmdWid), argv, argc) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !count )
|
|
Packit |
b099d7 |
{ return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( cmdWid->command.error )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( (listCB->item_position == (count - 1))
|
|
Packit |
b099d7 |
|| ( (listCB->item_position == count)
|
|
Packit |
b099d7 |
&& (listCB->reason != XmCR_DEFAULT_ACTION)) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* Selection or default action on the blank line, or selection on
|
|
Packit |
b099d7 |
* error message. Restore previous selection and return.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
XmListDeselectPos( SB_List( cmdWid), listCB->item_position) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( cmdWid->selection_box.list_selected_item_position )
|
|
Packit |
b099d7 |
{ XmListSelectPos( SB_List( cmdWid),
|
|
Packit |
b099d7 |
cmdWid->selection_box.list_selected_item_position, FALSE) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XmListDeletePos( SB_List( cmdWid), 0) ; /* Delete error message.*/
|
|
Packit |
b099d7 |
XmListDeletePos( SB_List( cmdWid), 0) ; /* Delete blank line.*/
|
|
Packit |
b099d7 |
cmdWid->command.error = FALSE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( count <= 2 )
|
|
Packit |
b099d7 |
{ /* List only contained error message and blank line.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
cmdWid->selection_box.list_selected_item_position = 0 ;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
count -= 2 ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (listCB->item_position > count)
|
|
Packit |
b099d7 |
&& (listCB->reason == XmCR_DEFAULT_ACTION) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* Default action on the error message line. Restore previous
|
|
Packit |
b099d7 |
* selection, clear text area, and return.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( cmdWid->selection_box.list_selected_item_position )
|
|
Packit |
b099d7 |
{ XmListSelectPos( SB_List( cmdWid),
|
|
Packit |
b099d7 |
cmdWid->selection_box.list_selected_item_position, FALSE) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XmTextFieldSetString( cmdWid->selection_box.text, "") ;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( listCB->reason == XmCR_DEFAULT_ACTION )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* If we are already at max items, remove first item.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( count >= cmdWid->command.history_max_items )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmListDeletePos( cmdWid->selection_box.list, 1) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( cmdWid->selection_box.list_selected_item_position > 0 )
|
|
Packit |
b099d7 |
{ cmdWid->selection_box.list_selected_item_position-- ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
tmpXmString = XmStringCopy( listCB->item) ;
|
|
Packit |
b099d7 |
XmListAddItemUnselected( cmdWid->selection_box.list, tmpXmString, 0) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmListSetBottomPos( cmdWid->selection_box.list, 0) ;
|
|
Packit |
b099d7 |
XmTextFieldSetString( cmdWid->selection_box.text, "") ;
|
|
Packit |
b099d7 |
/* Call the users command entered callback.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
cmdCB.reason = XmCR_COMMAND_ENTERED ;
|
|
Packit |
b099d7 |
cmdCB.event = NULL ;
|
|
Packit |
b099d7 |
cmdCB.value = tmpXmString ;
|
|
Packit |
b099d7 |
cmdCB.length = XmStringLength( tmpXmString) ;
|
|
Packit |
b099d7 |
XtCallCallbackList( (Widget) cmdWid, cmdWid->command.callback, &cmdCB) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmStringFree( tmpXmString) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else /* listCB->reason is BROWSE_SELECT or SINGLE_SELECT */
|
|
Packit |
b099d7 |
{ /* Update the text widget to relect the latest list selection.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
cmdWid->selection_box.list_selected_item_position =
|
|
Packit |
b099d7 |
listCB->item_position ;
|
|
Packit |
b099d7 |
if((text_value = _XmStringGetTextConcat( listCB->item)) != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTextFieldSetString( SB_Text( cmdWid), text_value) ;
|
|
Packit |
b099d7 |
XmTextFieldSetInsertionPosition( SB_Text( cmdWid),
|
|
Packit |
b099d7 |
XmTextFieldGetLastPosition( SB_Text( cmdWid))) ;
|
|
Packit |
b099d7 |
XtFree( text_value) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Callback for Text ValueChanged callback
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
CommandCallback(
|
|
Packit |
b099d7 |
Widget w, /* unused */
|
|
Packit |
b099d7 |
XtPointer cl_data,
|
|
Packit |
b099d7 |
XtPointer call_data )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget client_data = (XmCommandWidget) cl_data ;
|
|
Packit |
b099d7 |
XmCommandCallbackStruct cb;
|
|
Packit |
b099d7 |
char *str;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cb.reason = XmCR_COMMAND_CHANGED;
|
|
Packit |
b099d7 |
cb.event = ((XmAnyCallbackStruct *) call_data)->event ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* get char* string from text and convert to XmString type */
|
|
Packit |
b099d7 |
str = XmTextFieldGetString (client_data->selection_box.text);
|
|
Packit |
b099d7 |
cb.value = XmStringGenerate(str, XmFONTLIST_DEFAULT_TAG,
|
|
Packit |
b099d7 |
XmCHARSET_TEXT, NULL);
|
|
Packit |
b099d7 |
XtFree (str);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cb.length = XmStringLength (cb.value);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtCallCallbackList ((Widget) client_data, client_data->command.value_changed_callback, &cb;;
|
|
Packit |
b099d7 |
XmStringFree (cb.value);
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
CommandParentProcess(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XmParentProcessData event )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget cmd = (XmCommandWidget) wid ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (event->any.process_type == XmINPUT_ACTION)
|
|
Packit |
b099d7 |
&& ( (event->input_action.action == XmPARENT_ACTIVATE)
|
|
Packit |
b099d7 |
|| ( (event->input_action.action == XmPARENT_CANCEL)
|
|
Packit |
b099d7 |
&& BB_CancelButton( cmd))) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( event->input_action.action == XmPARENT_ACTIVATE )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmCommandReturn( (Widget) cmd, event->input_action.event,
|
|
Packit |
b099d7 |
event->input_action.params,
|
|
Packit |
b099d7 |
event->input_action.num_params) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ _XmBulletinBoardCancel( (Widget) cmd,
|
|
Packit |
b099d7 |
event->input_action.event, event->input_action.params,
|
|
Packit |
b099d7 |
event->input_action.num_params) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return( TRUE) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return( _XmParentProcess( XtParent( cmd), event)) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Return function to "complete" text entry
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
_XmCommandReturn(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
String *params, /* unused */
|
|
Packit |
b099d7 |
Cardinal *numParams ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget w = (XmCommandWidget) wid ;
|
|
Packit |
b099d7 |
XmCommandCallbackStruct cb;
|
|
Packit |
b099d7 |
XmString tmpXmString;
|
|
Packit |
b099d7 |
String tmpString;
|
|
Packit |
b099d7 |
Arg argv[5] ;
|
|
Packit |
b099d7 |
Cardinal argc ;
|
|
Packit |
b099d7 |
int count ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* if an error has been sent to the history list, remove it now */
|
|
Packit |
b099d7 |
if (w->command.error) {
|
|
Packit |
b099d7 |
XmListDeletePos (w->selection_box.list, 0); /* delete error msg */
|
|
Packit |
b099d7 |
XmListDeletePos (w->selection_box.list, 0); /* delete blank line */
|
|
Packit |
b099d7 |
w->command.error = FALSE;
|
|
Packit |
b099d7 |
XmListSetBottomPos (w->selection_box.list, 0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* update the history: - get text, check null/empty */
|
|
Packit |
b099d7 |
/* - create XmString from text */
|
|
Packit |
b099d7 |
/* - increment local list count */
|
|
Packit |
b099d7 |
/* - add to history list */
|
|
Packit |
b099d7 |
/* - delete first element if too */
|
|
Packit |
b099d7 |
/* many items (maxItemCount) */
|
|
Packit |
b099d7 |
/* - position list to end */
|
|
Packit |
b099d7 |
/* - reset selection list ptr */
|
|
Packit |
b099d7 |
/* - reset command to "" */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmpString = XmTextFieldGetString (w->selection_box.text);
|
|
Packit |
b099d7 |
if ((tmpString == NULL) || (strcmp(tmpString, "") == 0)) {
|
|
Packit |
b099d7 |
if (tmpString) XtFree(tmpString);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
argc = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( argv[argc], XmNitemCount, &count) ; ++argc ;
|
|
Packit |
b099d7 |
XtGetValues( SB_List( w), argv, argc) ;
|
|
Packit |
b099d7 |
/* if already at max items, remove first item in list */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count >= w->command.history_max_items)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmListDeletePos (w->selection_box.list, 1);
|
|
Packit |
b099d7 |
if (w->selection_box.list_selected_item_position > 0)
|
|
Packit |
b099d7 |
w->selection_box.list_selected_item_position--;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
tmpXmString = XmStringGenerate(tmpString, XmFONTLIST_DEFAULT_TAG,
|
|
Packit |
b099d7 |
XmCHARSET_TEXT, NULL);
|
|
Packit |
b099d7 |
XmListAddItemUnselected (w->selection_box.list, tmpXmString, 0);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmListSetBottomPos (w->selection_box.list, 0);
|
|
Packit |
b099d7 |
XmTextFieldSetString (w->selection_box.text, "");
|
|
Packit |
b099d7 |
/* call the users command entered callback */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cb.reason = XmCR_COMMAND_ENTERED;
|
|
Packit |
b099d7 |
cb.event = event;
|
|
Packit |
b099d7 |
cb.value = tmpXmString;
|
|
Packit |
b099d7 |
cb.length = XmStringLength (tmpXmString);
|
|
Packit |
b099d7 |
XtCallCallbackList ((Widget) w, w->command.callback, &cb;;
|
|
Packit |
b099d7 |
XmStringFree (tmpXmString);
|
|
Packit |
b099d7 |
XtFree (tmpString);
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
_XmCommandUpOrDown(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XEvent *event, /* unused */
|
|
Packit |
b099d7 |
String *argv,
|
|
Packit |
b099d7 |
Cardinal *argc ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget cmd = (XmCommandWidget) wid ;
|
|
Packit |
b099d7 |
int visible ;
|
|
Packit |
b099d7 |
int top ;
|
|
Packit |
b099d7 |
int key_pressed ;
|
|
Packit |
b099d7 |
Widget list ;
|
|
Packit |
b099d7 |
int * position ;
|
|
Packit |
b099d7 |
int count ;
|
|
Packit |
b099d7 |
Arg av[5] ;
|
|
Packit |
b099d7 |
Cardinal ac ;
|
|
Packit |
b099d7 |
int selected_count ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !(list = cmd->selection_box.list) )
|
|
Packit |
b099d7 |
{ return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
ac = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( av[ac], XmNitemCount, &count) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetArg( av[ac], XmNtopItemPosition, &top) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetArg( av[ac], XmNvisibleItemCount, &visible) ; ++ac ;
|
|
Packit |
b099d7 |
XtSetArg( av[ac], XmNselectedItemCount, &selected_count); ac++;
|
|
Packit |
b099d7 |
XtGetValues( (Widget) list, av, ac) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !count
|
|
Packit |
b099d7 |
|| (cmd->command.error && (count <= 2)) )
|
|
Packit |
b099d7 |
{ return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Fix for 5237 - Check the selected_count to ensure that a selection
|
|
Packit |
b099d7 |
* exists. No items may be selected if the application
|
|
Packit |
b099d7 |
* has run XmListDeselect* routine. If no items in the
|
|
Packit |
b099d7 |
* list are selected, set list_selected_item_position to 0.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (!selected_count)
|
|
Packit |
b099d7 |
cmd->selection_box.list_selected_item_position = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (_XmConvertActionParamToRepTypeId((Widget) cmd,
|
|
Packit |
b099d7 |
XmRID_COMMAND_SELECTION_BOX_UP_OR_DOWN_ACTION_PARAMS,
|
|
Packit |
b099d7 |
argv[0], True, &key_pressed) == False)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* We couldn't convert the value. Just assume a value of 0. */
|
|
Packit |
b099d7 |
key_pressed = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
position = &(cmd->selection_box.list_selected_item_position) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( *position == 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* If error is visible, select last item - 2. Otherwise, select
|
|
Packit |
b099d7 |
* last item in list.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( cmd->command.error )
|
|
Packit |
b099d7 |
{ *position = count - 2 ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ *position = count ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XmListSelectPos( list, *position, True) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( !key_pressed && (*position > 1) )
|
|
Packit |
b099d7 |
{ /* up */
|
|
Packit |
b099d7 |
XmListDeselectPos( list, *position) ;
|
|
Packit |
b099d7 |
XmListSelectPos( list, --*position, True) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( (key_pressed == 1) && (*position < count) )
|
|
Packit |
b099d7 |
{ /* down */
|
|
Packit |
b099d7 |
XmListDeselectPos( list, *position) ;
|
|
Packit |
b099d7 |
XmListSelectPos( list, ++*position, True) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( key_pressed == 2 )
|
|
Packit |
b099d7 |
{ /* home */
|
|
Packit |
b099d7 |
XmListDeselectPos( list, *position) ;
|
|
Packit |
b099d7 |
*position = 1 ;
|
|
Packit |
b099d7 |
XmListSelectPos( list, *position, True) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( key_pressed == 3 )
|
|
Packit |
b099d7 |
{ /* end */
|
|
Packit |
b099d7 |
XmListDeselectPos( list, *position) ;
|
|
Packit |
b099d7 |
*position = count ;
|
|
Packit |
b099d7 |
XmListSelectPos( list, *position, True) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( top > *position )
|
|
Packit |
b099d7 |
{ XmListSetPos( list, *position) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ if( (top + visible) <= *position )
|
|
Packit |
b099d7 |
{ XmListSetBottomPos( list, *position) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************************************************
|
|
Packit |
b099d7 |
* *
|
|
Packit |
b099d7 |
* Resize - update visibleItemCount when resized
|
|
Packit |
b099d7 |
* *
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Resize(Widget wid)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Cardinal ac;
|
|
Packit |
b099d7 |
Arg av[5] ;
|
|
Packit |
b099d7 |
XmCommandWidget cw = (XmCommandWidget)wid;
|
|
Packit |
b099d7 |
XtWidgetProc resize;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmProcessLock();
|
|
Packit |
b099d7 |
resize = xmSelectionBoxClassRec.core_class.resize;
|
|
Packit |
b099d7 |
_XmProcessUnlock();
|
|
Packit |
b099d7 |
(*resize) ((Widget) cw) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* keep list_visible_item_count in sync with List's visibleItemCount*/
|
|
Packit |
b099d7 |
ac = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( av[ac], XmNvisibleItemCount, &(cw->selection_box.list_visible_item_count)) ; ++ac
|
|
Packit |
b099d7 |
;
|
|
Packit |
b099d7 |
XtGetValues( cw->selection_box.list, av, ac) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Set attributes of a command widget
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
SetValues(
|
|
Packit |
b099d7 |
Widget ow,
|
|
Packit |
b099d7 |
Widget rw, /* unused */
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args, /* unused */
|
|
Packit |
b099d7 |
Cardinal *num_args ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget old = (XmCommandWidget) ow ;
|
|
Packit |
b099d7 |
XmCommandWidget new_w = (XmCommandWidget) nw ;
|
|
Packit |
b099d7 |
int max;
|
|
Packit |
b099d7 |
Arg argv[5] ;
|
|
Packit |
b099d7 |
Cardinal argc ;
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* mustMatch does not apply to command... (it is always false) */
|
|
Packit |
b099d7 |
if (new_w->selection_box.must_match != False) {
|
|
Packit |
b099d7 |
new_w->selection_box.must_match = False;
|
|
Packit |
b099d7 |
XmeWarning( (Widget) new_w, WARNING5);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w->selection_box.dialog_type != XmDIALOG_COMMAND) {
|
|
Packit |
b099d7 |
new_w->selection_box.dialog_type = XmDIALOG_COMMAND;
|
|
Packit |
b099d7 |
XmeWarning( (Widget) new_w, WARNING1);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* check for and change max history items (remove items if needed) */
|
|
Packit |
b099d7 |
if (new_w->command.history_max_items < 1) {
|
|
Packit |
b099d7 |
new_w->command.history_max_items = old->command.history_max_items;
|
|
Packit |
b099d7 |
XmeWarning( (Widget) new_w, WARNING6);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (new_w->command.history_max_items <
|
|
Packit |
b099d7 |
old->command.history_max_items)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
argc = 0 ;
|
|
Packit |
b099d7 |
XtSetArg( argv[argc], XmNitemCount, &max) ; ++argc ;
|
|
Packit |
b099d7 |
XtGetValues( SB_List( new_w), argv, argc) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while (max > new_w->command.history_max_items) {
|
|
Packit |
b099d7 |
XmListDeletePos (new_w->selection_box.list, 1);
|
|
Packit |
b099d7 |
if (new_w->selection_box.list_selected_item_position > 0)
|
|
Packit |
b099d7 |
new_w->selection_box.list_selected_item_position--;
|
|
Packit |
b099d7 |
max--;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (old->command.error)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmString new_xms, old_xms;
|
|
Packit |
b099d7 |
int new_count = new_w->selection_box.list_item_count;
|
|
Packit |
b099d7 |
int old_count = old->selection_box.list_item_count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_count > 2 && old_count > 2)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmString new_blank, old_blank, new_error, old_error;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
new_error = new_w->selection_box.list_items[new_count-1];
|
|
Packit |
b099d7 |
old_error = old->selection_box.list_items[new_count-1];
|
|
Packit |
b099d7 |
new_blank = new_w->selection_box.list_items[new_count-2];
|
|
Packit |
b099d7 |
old_blank = old->selection_box.list_items[new_count-2];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmStringCompare(new_error, old_error) &&
|
|
Packit |
b099d7 |
XmStringCompare(new_blank, old_blank))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w->command.error = FALSE;
|
|
Packit |
b099d7 |
#if 0
|
|
Packit |
b099d7 |
XmListDeletePos(SB_List(old), 0); /* Delete error message.*/
|
|
Packit |
b099d7 |
XmListDeletePos(SB_List(old), 0) ; /* Delete blank line.*/
|
|
Packit |
b099d7 |
old->command.error = FALSE ;
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else new_w->command.error = FALSE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* require redisplay */
|
|
Packit |
b099d7 |
return(True);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Create an instance of the widget
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateCommand(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
String name,
|
|
Packit |
b099d7 |
ArgList al,
|
|
Packit |
b099d7 |
Cardinal ac )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Widget w;
|
|
Packit |
b099d7 |
ArgList argsNew;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* add dialogType to arglist and force to XmDIALOG_COMMAND... */
|
|
Packit |
b099d7 |
/* big time bad stuff will happen if they use prompt type... */
|
|
Packit |
b099d7 |
/* (like, no list gets created, but used all through command) */
|
|
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, XmDIALOG_COMMAND); ac++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create Command, free argsNew, return */
|
|
Packit |
b099d7 |
w = XtCreateWidget (name, xmCommandWidgetClass, parent, argsNew, ac);
|
|
Packit |
b099d7 |
XtFree ((char *) argsNew);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (w);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmVaCreateCommand(
|
|
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 |
xmCommandWidgetClass,
|
|
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 |
XmVaCreateManagedCommand(
|
|
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 |
xmCommandWidgetClass,
|
|
Packit |
b099d7 |
parent, True,
|
|
Packit |
b099d7 |
var, count);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
return w;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCommandGetChild(
|
|
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 |
XmCommandWidget w = (XmCommandWidget)widget;
|
|
Packit |
b099d7 |
Widget ret_widget = NULL;
|
|
Packit |
b099d7 |
_XmWidgetToAppContext(widget);
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
_XmAppLock(app);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (child) {
|
|
Packit |
b099d7 |
case XmDIALOG_COMMAND_TEXT:
|
|
Packit |
b099d7 |
ret_widget = w->selection_box.text;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_HISTORY_LIST:
|
|
Packit |
b099d7 |
ret_widget = w->selection_box.list;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_PROMPT_LABEL:
|
|
Packit |
b099d7 |
ret_widget = w->selection_box.selection_label;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
case XmDIALOG_WORK_AREA:
|
|
Packit |
b099d7 |
ret_widget = w->selection_box.work_area;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
XmeWarning( (Widget) w, WARNING2);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return ret_widget;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Replace the text value with "value"
|
|
Packit |
b099d7 |
* note: selection_box.text_string isn't updated, as we are not
|
|
Packit |
b099d7 |
* going to guarantee that text_string is up to date with
|
|
Packit |
b099d7 |
* the text widget string at all times...
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
XmCommandSetValue(
|
|
Packit |
b099d7 |
Widget widget,
|
|
Packit |
b099d7 |
XmString value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget w = (XmCommandWidget)widget;
|
|
Packit |
b099d7 |
char *str;
|
|
Packit |
b099d7 |
_XmWidgetToAppContext(widget);
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAppLock(app);
|
|
Packit |
b099d7 |
if( !(str = _XmStringGetTextConcat( value)) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmeWarning( (Widget) w, WARNING3);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XmTextFieldSetString(w->selection_box.text, str);
|
|
Packit |
b099d7 |
XtFree(str);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Append "value" to the end of the current text value
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
XmCommandAppendValue(
|
|
Packit |
b099d7 |
Widget widget,
|
|
Packit |
b099d7 |
XmString value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget w = (XmCommandWidget)widget;
|
|
Packit |
b099d7 |
char *strNew;
|
|
Packit |
b099d7 |
XmTextPosition endPosition;
|
|
Packit |
b099d7 |
_XmWidgetToAppContext(widget);
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (value == NULL) return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAppLock(app);
|
|
Packit |
b099d7 |
/* return if invalid string from "value" passed in */
|
|
Packit |
b099d7 |
if( !(strNew = _XmStringGetTextConcat( value)) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmeWarning( (Widget) w, WARNING3);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( !strNew || !*strNew ) {
|
|
Packit |
b099d7 |
XmeWarning( (Widget) w, WARNING4);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/* get string length of current command string */
|
|
Packit |
b099d7 |
endPosition = XmTextFieldGetLastPosition( w->selection_box.text) ;
|
|
Packit |
b099d7 |
/* append new string to existing string */
|
|
Packit |
b099d7 |
XmTextFieldReplace (w->selection_box.text, endPosition, endPosition,
|
|
Packit |
b099d7 |
strNew) ;
|
|
Packit |
b099d7 |
/* reset insertion position to end of text, and free new string */
|
|
Packit |
b099d7 |
XmTextFieldSetInsertionPosition( w->selection_box.text,
|
|
Packit |
b099d7 |
XmTextFieldGetLastPosition( w->selection_box.text)) ;
|
|
Packit |
b099d7 |
XtFree (strNew);
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* Print a blank string and error string, which will get removed the next
|
|
Packit |
b099d7 |
* time a string is added to the history.
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
XmCommandError(
|
|
Packit |
b099d7 |
Widget widget,
|
|
Packit |
b099d7 |
XmString error )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmCommandWidget w = (XmCommandWidget)widget;
|
|
Packit |
b099d7 |
XmString blankXmString;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmWidgetToAppContext(widget);
|
|
Packit |
b099d7 |
/****************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (error == NULL) return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAppLock(app);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* If error is currently in list remove it, but leave (or add) blank item.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if( w->command.error )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmListDeletePos (w->selection_box.list, 0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{ blankXmString = XmStringCreate(" ", XmFONTLIST_DEFAULT_TAG);
|
|
Packit |
b099d7 |
XmListAddItemUnselected (w->selection_box.list, blankXmString, 0);
|
|
Packit |
b099d7 |
XmStringFree (blankXmString);
|
|
Packit |
b099d7 |
w->command.error = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create and add the error string as a list item */
|
|
Packit |
b099d7 |
XmListAddItemUnselected (w->selection_box.list, error, 0);
|
|
Packit |
b099d7 |
XmListSetBottomPos (w->selection_box.list, 0);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmAppUnlock(app);
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************
|
|
Packit |
b099d7 |
* This convenience function creates a DialogShell and a Command
|
|
Packit |
b099d7 |
* child of the shell; returns the Command widget.
|
|
Packit |
b099d7 |
****************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateCommandDialog(
|
|
Packit |
b099d7 |
Widget ds_p,
|
|
Packit |
b099d7 |
String name,
|
|
Packit |
b099d7 |
ArgList com_args,
|
|
Packit |
b099d7 |
Cardinal com_n )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return XmeCreateClassDialog (xmCommandWidgetClass,
|
|
Packit |
b099d7 |
ds_p, name, com_args, com_n) ;
|
|
Packit |
b099d7 |
}
|