1
/* $XConsortium: helloint.c /main/5 1995/07/15 20:45:32 drk $ */
3
* @OPENGROUP_COPYRIGHT@
5
* Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
6
* Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
7
* ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
8
* the full copyright text.
10
* This software is subject to an open license. It may only be
11
* used on, with or for operating systems which are themselves open
12
* source systems. You must contact The Open Group for a license
13
* allowing distribution and sublicensing of this software on, with,
14
* or for operating systems which are not Open Source programs.
16
* See http://www.opengroup.org/openmotif/license for full
17
* details of the license agreement. Any use, reproduction, or
18
* distribution of the program constitutes recipient's acceptance of
21
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
22
* PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
* KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
24
* WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
25
* OR FITNESS FOR A PARTICULAR PURPOSE
27
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
28
* NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
29
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30
* DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
31
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33
* ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
34
* EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
35
* POSSIBILITY OF SUCH DAMAGES.
40
#include <stdlib.h> /* for getenv() */
41
#include <Xm/Xm.h> /* Motif Toolkit */
42
#include <Mrm/MrmPublic.h> /* Mrm Toolkit */
44
#define APP_CLASS "XmdHelloInt"
46
static void Activate(Widget, XtPointer, XtPointer);
49
* MRM database file list
51
static String uid_vec[]={"helloint.uid","l_strings.uid"};
55
static MrmRegisterArg reg_vec[] = {
56
{"helloworld_button_activate",(XtPointer)Activate}
62
static MrmHierarchy s_mrm_hierarchy;
65
/****************************************************************
67
* Main program. Fetch UIL interface description and enter
70
****************************************************************/
74
XtAppContext app_context;
75
Widget top_level, helloworld_main;
80
* This demo requires XAPPLRESDIR to be set to '.'. Mrm
81
* will only report that l_strings.uid could not be found,
82
* so, to be a little more friendly, we help the user. This
83
* it not a check that normally would be done, since the uid
84
* files would be installed in the appropriate directory.
87
if ((applresdir = (char *)getenv("XAPPLRESDIR")) == NULL ||
88
strcmp(applresdir, ".") != 0) {
89
XtError("Environment variable XAPPLRESDIR must be set to \".\"\n");
93
* Set up language environment.
95
XtSetLanguageProc(NULL, NULL, NULL);
104
* Initialize Xt and create a resizable shell
107
top_level = XtVaAppInitialize(&app_context, "XmdHelloInt",
108
NULL, 0, &argc, argv, NULL,
109
XmNallowShellResize, True, NULL);
112
* Create the Mrm hierarchy
115
if (MrmOpenHierarchy (XtNumber(uid_vec), /* number of files */
117
NULL, /* os_ext_list (null) */
118
&s_mrm_hierarchy) /* ptr to returned id */
120
XtError ("can't open hierarchy\n");
124
* Register our callback routines so that the resource manager can
125
* resolve them at widget-creation time.
128
if (MrmRegisterNames (reg_vec, XtNumber(reg_vec)) != MrmSUCCESS) {
129
XtError("can't register names\n");
133
* Call MRM to fetch and create the widgets
136
if (MrmFetchWidget (s_mrm_hierarchy,
140
&mrm_class) != MrmSUCCESS) {
141
XtError ("can't fetch interface\n");
145
* Manage the widget returned by Mrm.
148
XtManageChild(helloworld_main);
151
* Realize the widget tree.
153
XtRealizeWidget(top_level);
156
* Loop and process events
159
XtAppMainLoop(app_context);
166
static void Activate(Widget widget,
167
XtPointer client_data,
168
XtPointer callback_data)
170
static Boolean first_time = True;
175
* Get "Goodbye World!" in the language of choice and
176
* set the label string of widget to this string.
178
XtSetArg(arglist[0], XmNlabelString, "bye_label");
179
MrmFetchSetValues(s_mrm_hierarchy, widget, arglist, 1);