2 * (c) Copyright 1989, 1990, 1991, 1992 OPEN SOFTWARE FOUNDATION, INC.
10 static char rcsid[] = "$XConsortium: dogs.c /main/3 1995/10/27 10:43:03 rswiston $"
14 /*****************************************************************************
16 * dogs.c - Square & Dog widget demo source file.
18 ******************************************************************************/
22 #include <Mrm/MrmPublic.h>
26 XtAppContext app_context;
33 static void create_cb();
34 static void bark_cb();
36 static void scale_cb();
37 static void help_cb();
38 static void exit_cb();
40 static MrmHierarchy mrm_id = 0;
41 static char *mrm_vec[]={"dogs.uid", NULL};
42 static MrmCode mrm_class;
43 static MRMRegisterArg mrm_names[] = {
44 {"create_cb", (XtPointer)create_cb },
45 {"bark_cb", (XtPointer)bark_cb },
46 {"tb_cb", (XtPointer)tb_cb },
47 {"scale_cb", (XtPointer)scale_cb },
48 {"help_cb", (XtPointer)help_cb },
49 {"exit_cb", (XtPointer)exit_cb }
52 static Widget dog1_id;
53 static Widget dog2_id;
54 static Widget dog3_id;
55 static Widget help_id;
63 Widget app_main = NULL;
67 SquareMrmInitialize();
70 XtToolkitInitialize();
71 app_context = XtCreateApplicationContext();
72 display = XtOpenDisplay(app_context, NULL, argv[0], "Dogs",
73 NULL, 0, &argc, argv);
75 if (display == NULL) {
76 fprintf(stderr, "%s: Can't open display\n", argv[0]);
80 XtSetArg (args[0], XtNallowShellResize, True);
81 XtSetArg (args[1], XtNminWidth, 620);
82 XtSetArg (args[2], XtNminHeight, 370);
83 shell = XtAppCreateShell(argv[0], NULL, applicationShellWidgetClass,
86 if (MrmOpenHierarchy(1, mrm_vec, NULL, &mrm_id) != MrmSUCCESS) exit(0);
87 MrmRegisterNames(mrm_names, XtNumber(mrm_names));
88 MrmFetchWidget (mrm_id, "app_main", shell, &app_main, &mrm_class);
90 XtManageChild(app_main);
91 XtRealizeWidget(shell);
92 XtAppMainLoop(app_context);
95 static void create_cb(w, id, reason)
98 unsigned long *reason;
101 case k_dog1_id: dog1_id = w; break;
102 case k_dog2_id: dog2_id = w; break;
103 case k_dog3_id: dog3_id = w; break;
106 XtUnmanageChild((Widget)XmMessageBoxGetChild(help_id,
107 XmDIALOG_CANCEL_BUTTON));
108 XtUnmanageChild((Widget)XmMessageBoxGetChild(help_id,
109 XmDIALOG_HELP_BUTTON));
114 static void bark_cb (w, volume, cb)
119 XBell(XtDisplay(w), *volume);
122 static void tb_cb (w, tag, cb)
125 XmToggleButtonCallbackStruct *cb;
131 case(1) : dog = dog1_id; break;
132 case(2) : dog = dog2_id; break;
133 case(3) : dog = dog3_id; break;
135 XtSetArg(args[0], SquareNmakeSquare, cb->set);
136 XtSetValues(dog, args, 1);
139 static void scale_cb(w, tag, cb)
142 XmScaleCallbackStruct *cb;
148 case(1) : dog = dog1_id; break;
149 case(2) : dog = dog2_id; break;
150 case(3) : dog = dog3_id; break;
152 XtSetArg(args[0], DogNwagTime, cb->value);
153 XtSetValues(dog, args, 1);
156 static void help_cb (w, name, cb)
163 if (name == NULL) return;
164 XtSetArg (args[0], XmNmessageString, name);
165 XtSetValues(help_id, args, 1);
166 XtManageChild(help_id);
169 static void exit_cb (w, name, cb)