Mercurial > hg > xemacs-beta
annotate etc/tests/external-widget/test-ew-motif.c @ 5051:c3d372419e09
merge
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Sat, 20 Feb 2010 18:57:55 -0600 |
parents | 03ab78e48ef6 |
children | ba07c880114a |
rev | line source |
---|---|
4894
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
1 /* Test external widget code in Motif. |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
2 Copyright (C) 1993 Ben Wing. |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
3 |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
4 This file is part of XEmacs. |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
5 |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
6 XEmacs is free software; you can redistribute it and/or modify it |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
7 under the terms of the GNU General Public License as published by the |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
8 Free Software Foundation; either version 2, or (at your option) any |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
9 later version. |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
10 |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
14 for more details. |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
15 |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
16 You should have received a copy of the GNU General Public License |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
17 along with XEmacs; see the file COPYING. If not, write to |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
18 the Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
19 Boston, MA 02110-1301, USA. */ |
03ab78e48ef6
Add copyright and license information based on Ben's recollections.
Jerry James <james@xemacs.org>
parents:
2
diff
changeset
|
20 |
2 | 21 #include <Xm/Xm.h> |
22 #include <Xm/RowColumn.h> | |
23 #include <Xm/Scale.h> | |
24 #include <Xm/PushB.h> | |
25 #include <Xm/Label.h> | |
26 #include <Xm/Text.h> | |
27 #include <Xm/PanedW.h> | |
28 #include "ExternalClient.h" | |
29 | |
30 #ifdef TOOLTALK | |
31 #include <desktop/tt_c.h> | |
32 char *HxProcID; | |
33 #endif | |
34 | |
35 XtAppContext xt_app_con; | |
36 | |
37 void ScaleValueChangedCB(Widget scale, XtPointer app_data, XtPointer widget_data) | |
38 { | |
39 XmScaleCallbackStruct *xms = (XmScaleCallbackStruct *) widget_data; | |
40 Widget label = (Widget) app_data; | |
41 char labelarr[10]; | |
42 XmString labelstr; | |
43 #if 0 | |
44 sprintf(labelarr, "%d", xms->value); | |
45 labelstr = XmStringCreateLocalized(labelarr); | |
46 XtVaSetValues(label, XmNlabelString, labelstr, NULL); | |
47 XmStringFree(labelstr); | |
48 #endif | |
49 } | |
50 | |
51 #ifdef TOOLTALK | |
52 static void | |
53 handle_tt_input(XtPointer client_data, int *source, XtInputId *id) | |
54 { | |
55 Tt_message m = tt_message_receive(); | |
56 | |
57 if (m && !(tt_ptr_error(m))) { | |
58 tt_message_destroy(m); | |
59 } | |
60 } | |
61 | |
62 Tt_status | |
63 HxInitializeToolTalk() | |
64 { | |
65 static Boolean initialized = FALSE; | |
66 | |
67 if (!initialized) { | |
68 int fd; | |
69 Tt_status status; | |
70 | |
71 HxProcID = tt_open(); | |
72 fd = tt_fd(); | |
73 if (TT_OK != (status = tt_session_join( tt_default_session() ))) | |
74 return status; | |
75 (void)XtAppAddInput(xt_app_con, fd, (void *)XtInputReadMask, handle_tt_input, NULL); | |
76 initialized = TRUE; | |
77 } | |
78 | |
79 return TT_OK; | |
80 } | |
81 #endif | |
82 | |
83 main(int argc, char **argv) | |
84 { | |
85 Widget shell, rowcolumn, scale, pushbutton, label1, label2, text; | |
86 Widget paned, text2; | |
87 int n, i; | |
88 Widget widlist[100]; | |
89 Widget emacscli[100]; | |
90 Arg args[100]; | |
91 int no_ews = 1; | |
92 char buf[100]; | |
93 | |
94 if (argc > 1) | |
95 no_ews = atoi (argv[1]); | |
96 | |
97 shell = XtAppInitialize(&xt_app_con, "Testmotif", NULL, 0, | |
98 &argc, argv, NULL, NULL, 0); | |
99 | |
100 #ifdef TOOLTALK | |
101 HxInitializeToolTalk(); | |
102 #endif | |
103 | |
104 rowcolumn = XmCreateRowColumn(shell, "rowcolumn", NULL, 0); | |
105 XtManageChild(rowcolumn); | |
106 | |
107 n = 0; | |
108 XtSetArg(args[n], XmNtraversalOn, TRUE); n++; | |
109 #if 0 | |
110 label1 = XmCreateLabel(rowcolumn, "label1", args, n); | |
111 #endif | |
112 label1 = XtVaCreateWidget("label1", xmLabelWidgetClass, rowcolumn, | |
113 XmNwidth, 50, XmNheight, 30, | |
114 XmNtraversalOn, TRUE, NULL); | |
115 label2 = XmCreateLabel(rowcolumn, "label2", NULL, 0); | |
116 scale = XmCreateScale(rowcolumn, "scale", NULL, 0); | |
117 XtAddCallback(scale, XmNvalueChangedCallback, ScaleValueChangedCB, label1); | |
118 paned = XmCreatePanedWindow(rowcolumn, "paned", NULL, 0); | |
119 n = 0; | |
120 widlist[n++] = label1; | |
121 widlist[n++] = label2; | |
122 widlist[n++] = scale; | |
123 widlist[n++] = paned; | |
124 XtManageChildren(widlist, n); | |
125 | |
126 pushbutton = XmCreatePushButton(paned, "pushbutton", NULL, 0); | |
127 text = XmCreateText(paned, "text", NULL, 0); | |
128 for (i=0; i<no_ews; i++) { | |
129 sprintf (buf, "extcli%d", i); | |
130 emacscli[i] = XtVaCreateWidget(buf, externalClientWidgetClass, paned, | |
131 XmNwidth, 500, XmNheight, 200, | |
132 XmNtraversalOn, TRUE, | |
133 #ifdef TOOLTALK | |
134 XtNuseToolTalk, TRUE, | |
135 #endif | |
136 NULL); | |
137 } | |
138 text2 = XmCreateText(paned, "text2", NULL, 0); | |
139 n = 0; | |
140 widlist[n++] = pushbutton; | |
141 widlist[n++] = text; | |
142 for (i=0; i<no_ews; i++) | |
143 widlist[n++] = emacscli[i]; | |
144 widlist[n++] = text2; | |
145 XtManageChildren(widlist, n); | |
146 | |
147 XtRealizeWidget(shell); | |
148 | |
149 { | |
150 XmString lab; | |
151 char labarr[1000]; | |
152 char tmpbuf[50]; | |
153 | |
154 strcpy (labarr, "window:"); | |
155 for (i=0; i<no_ews; i++) { | |
156 sprintf (tmpbuf, " %d", XtWindow(emacscli[i])); | |
157 strcat (labarr, tmpbuf); | |
158 } | |
159 lab = XmStringCreateLocalized(labarr); | |
160 XtVaSetValues(label2, XmNlabelString, lab, NULL); | |
161 XmStringFree(lab); | |
162 } | |
163 | |
164 XtAppMainLoop(xt_app_con); | |
165 } |