1 /*****************************************************************************
2 FILE : $Source: /projects/higgs1/SNNS/CVS/SNNS/xgui/sources/ui_main.c,v $
3 SHORTNAME : main.c
4 SNNS VERSION : 4.2
5
6 PURPOSE : contains many widgets to manage xgui of the SNNS
7 NOTES :
8
9 AUTHOR : Tilman Sommer
10 DATE : 1.4.1990
11
12 CHANGED BY : Kai-Uwe Herrmann 27.1.1993
13 RCS VERSION : $Revision: 2.27 $
14 LAST CHANGE : $Date: 1998/04/20 11:55:30 $
15
16 Copyright (c) 1990-1995 SNNS Group, IPVR, Univ. Stuttgart, FRG
17 Copyright (c) 1996-1998 SNNS Group, WSI, Univ. Tuebingen, FRG
18
19 ******************************************************************************/
20 #include <config.h>
21
22
23 #include "ui.h"
24
25 #ifndef ultrix
26 #ifdef HAVE_UNISTD_H
27 #include <unistd.h>
28 #endif
29 #endif
30
31 #ifdef __linux__
32 #include <linux/limits.h>
33 #endif
34 #include <sys/param.h>
35 #include <stdio.h>
36
37 #include <X11/Shell.h>
38 #include <X11/cursorfont.h>
39
40 #include <X11/Xaw3d/Box.h>
41 #include <X11/Xaw3d/Form.h>
42 #include <X11/Xaw3d/Cardinals.h>
43 #include <X11/Xaw3d/Command.h>
44 #include <X11/Xaw3d/SimpleMenu.h>
45 #include <X11/Xaw3d/SmeBSB.h>
46 #include <X11/Xaw3d/SmeLine.h>
47
48 #include "glob_typ.h"
49 #include "ui_mainP.h"
50 #include "ui_print.h"
51 #include "ui_layerP.h"
52 #include "ui_xWidgets.h"
53 #include "ui_display.h" /* init */
54 #include "ui_action.h" /* init */
55 #include "ui_key.h" /* init */
56 #include "ui_fileP.h" /* init */
57 #include "ui_color.h" /* init */
58 #include "ui_selection.h"
59 #include "ui_info.h"
60 #include "ui_infoP.h"
61 #include "ui_displwght.h"
62 #include "ui_displmap.h"
63 #include "ui_inversion.h"
64 #include "ui_confirmer.h"
65 #include "bn_bignet.h"
66 #include "bn_TD_bignet.h"
67 #include "bn_art1.h"
68 #include "bn_art2.h"
69 #include "bn_artmap.h"
70 #include "bn_kohonen.h"
71 #include "bn_bighop.h"
72 #include "bn_JordElm.h"
73 #include "bn_assoz.h"
74 #include "net_analyzer.h"
75
76 #include "d3_pannels.h"
77 #include "d3_global.h"
78 #include "d3_graph.h"
79 #include "d3_main.h"
80 #include "o_graph.h"
81 #include "cc_main.h"
82 #include "ui_kohonen.h"
83 #include "pr_main.h"
84 #include "ui_class.h"
85
86 #include "snns.xbm"
87
88 #include "ui_main.ph"
89
90
91 #ifdef PARAGON_KERNEL
92 #include "kr_ipdef.h"
93 #include "kr_ipmp.h"
94 #endif
95
96
97 /*****************************************************************************
98 FUNCTION : ui_init
99
100 PURPOSE : do some intialization
101 RETURNS : void
102 NOTES :
103
104 UPDATE : 1.2.1990
105 ******************************************************************************/
ui_init(void)106 static void ui_init (void)
107 {
108 ui_sel_initSelectionList(); /* list of selected units */
109 ui_displ_initDisplayList(); /* list of xgui displays */
110 ui_layer_initLayerNames(); /* initial layer names */
111 ui_key_init(); /* editor key automata */
112 ui_action_init(); /* editor action routines */
113 (void) getcwd( ui_pathname, MAXPATHLEN );
114
115 XawSimpleMenuAddGlobalActions(ui_appContext); /* for editor menu */
116 }
117
118
119 /*****************************************************************************
120 FUNCTION : ui_xCreatePanel
121
122 PURPOSE : create info panel
123 RETURNS : void
124 NOTES :
125
126 UPDATE : 27.7.1990
127 ******************************************************************************/
ui_xCreatePanel(void)128 static void ui_xCreatePanel (void)
129 {
130 Widget menu, mItem, label,button,buttontop,buttontop2,
131 form,dummyLabel;
132 Arg args[10];
133 Cardinal n=0;
134 XFontStruct *ui_font;
135
136 ui_infoBox = XtCreateManagedWidget("form", formWidgetClass, ui_toplevel,
137 NULL,ZERO);
138
139 ui_display = XtDisplay(ui_infoBox);
140 dummyLabel = ui_xCreateLabelItem(" ", ui_infoBox, 1, NULL, NULL);
141 XtSetArg(args[0], XtNfont, &ui_font);
142 XtGetValues(dummyLabel, args, 1);
143 ui_labelFontWidth = (int)((ui_font->max_bounds.width +
144 ui_font->min_bounds.width)*0.5+0.5)+1;
145 if(ui_labelFontWidth < 3){
146 ui_confirmOk("Can not access font structure!\n Now using font 7x13");
147 ui_labelFontWidth = 7;
148 }
149
150 button = ui_xCreateButtonItem("fileP", ui_infoBox, NULL, NULL);
151 XtAddCallback(button,XtNcallback, (XtCallbackProc)ui_displayFilePanel,
152 (Widget) button);
153
154 button = ui_xCreateButtonItem("controlP", ui_infoBox, button, NULL);
155 XtAddCallback(button,XtNcallback, (XtCallbackProc)ui_displayControl, NULL);
156
157 button = ui_xCreateButtonItem("infoP", ui_infoBox, button, NULL);
158 XtAddCallback(button,XtNcallback, (XtCallbackProc)ui_displayInfo,
159 (Widget) ui_infoBox);
160
161 button = ui_xCreateButtonItem("displayP", ui_infoBox, button, NULL);
162 XtAddCallback(button,XtNcallback, (XtCallbackProc)ui_displayGraphic, NULL);
163
164 button = ui_xCreateButtonItem("3dP", ui_infoBox, button, NULL);
165 XtAddCallback(button,XtNcallback, (XtCallbackProc)d3_displayGraphic, NULL);
166
167 button = ui_xCreateButtonItem("graphP", ui_infoBox, button, NULL);
168 XtAddCallback(button,XtNcallback, (XtCallbackProc)o_createOszi, NULL);
169
170 buttontop = ui_xCreateMenuButtonItem("bignetP", ui_infoBox, button, NULL);
171 menu = XtCreatePopupShell("menu",simpleMenuWidgetClass,buttontop,NULL,ZERO);
172 mItem = XtCreateManagedWidget("general",smeBSBObjectClass,menu,
173 NULL,ZERO);
174 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_createBignet, NULL);
175 mItem = XtCreateManagedWidget("time_delay",smeBSBObjectClass,menu,
176 NULL,ZERO);
177 XtAddCallback(mItem, XtNcallback,(XtCallbackProc) bn_create_TD_Bignet,NULL);
178 mItem = XtCreateManagedWidget("art1",smeBSBObjectClass,menu, NULL,ZERO);
179 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_createART1, NULL);
180 mItem = XtCreateManagedWidget("art2",smeBSBObjectClass,menu, NULL,ZERO);
181 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_createART2, NULL);
182 mItem = XtCreateManagedWidget("artmap",smeBSBObjectClass,menu, NULL,ZERO);
183 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_createARTMAP, NULL);
184 mItem = XtCreateManagedWidget("kohonen",smeBSBObjectClass,menu, NULL,ZERO);
185 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_createKOHONEN, NULL);
186 mItem = XtCreateManagedWidget("jordan",smeBSBObjectClass,menu, NULL,ZERO);
187 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_create_jordan, NULL);
188 mItem = XtCreateManagedWidget("elman",smeBSBObjectClass,menu, NULL,ZERO);
189 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_create_elman, NULL);
190 mItem = XtCreateManagedWidget("hopfield",smeBSBObjectClass,menu, NULL,ZERO);
191 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_createBigHop, NULL);
192 mItem = XtCreateManagedWidget("assoz",smeBSBObjectClass,menu, NULL,ZERO);
193 XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_create_assoz, NULL);
194
195
196 button = ui_xCreateButtonItem("prunP", ui_infoBox, NULL, buttontop);
197 XtAddCallback(button,XtNcallback, (XtCallbackProc)pr_createWindow, NULL);
198
199 button = ui_xCreateButtonItem("cascadeP", ui_infoBox, button, buttontop);
200 XtAddCallback(button,XtNcallback, (XtCallbackProc)cc_createWindow, NULL);
201
202 button = ui_xCreateButtonItem("kohonenP", ui_infoBox, button, buttontop);
203 XtAddCallback(button,XtNcallback,(XtCallbackProc)kohonen_createWindow,NULL);
204
205 button = ui_xCreateButtonItem("weightsP", ui_infoBox, button, buttontop);
206 XtAddCallback(button,XtNcallback, (XtCallbackProc)ui_displWeights, NULL);
207
208 button = ui_xCreateButtonItem("projectP", ui_infoBox, button, buttontop);
209 XtAddCallback(button,XtNcallback, (XtCallbackProc)ui_displMap, NULL);
210
211 buttontop2 = ui_xCreateButtonItem("analyzeP", ui_infoBox, button,buttontop);
212 XtAddCallback(buttontop2, XtNcallback,
213 (XtCallbackProc) NA_OpenNetworkAnalyzer, NULL);
214
215 buttontop = ui_xCreateButtonItem("inversionP", ui_infoBox,buttontop2,
216 buttontop);
217 XtAddCallback(buttontop,XtNcallback, (XtCallbackProc) ui_inversion, NULL);
218
219 button = ui_xCreateButtonItem("printP", ui_infoBox, NULL, buttontop);
220 XtAddCallback(button,XtNcallback, (XtCallbackProc) ui_printNet, NULL);
221
222 button = ui_xCreateButtonItem("helpP", ui_infoBox, button, buttontop);
223 XtAddCallback(button,XtNcallback, (XtCallbackProc) ui_displayText, NULL);
224
225 button = ui_xCreateButtonItem("classesP", ui_infoBox, button, buttontop);
226 XtAddCallback(button,XtNcallback, (XtCallbackProc) ui_classWindow, NULL);
227
228 button = ui_xCreateButtonItem("quitP", ui_infoBox, buttontop2, buttontop);
229 XtAddCallback(button,XtNcallback, (XtCallbackProc) ui_guiQuit,
230 (XtPointer) ui_infoBox);
231
232 n=0;
233 XtSetArg(args[n], XtNborderWidth, 1);n++;
234 XtSetArg(args[n], XtNleft , XtChainLeft);n++;
235 XtSetArg(args[n], XtNright , XtChainLeft);n++;
236 XtSetArg(args[n], XtNtop , XtChainTop);n++;
237 XtSetArg(args[n], XtNbottom, XtChainTop);n++;
238 XtSetArg(args[n], XtNfromVert,button);n++;
239 form = XtCreateManagedWidget("form", formWidgetClass, ui_infoBox, args, n);
240
241 ui_message = ui_xCreateLabelItem("manMsg", form, 63*ui_labelFontWidth,
242 NULL, NULL);
243
244 ui_stat_posWidget = ui_xCreateLabelItem("*", form, 16*ui_labelFontWidth,
245 NULL, ui_message);
246 label = ui_xCreateLabelItem("noSel", form, 20,ui_stat_posWidget,ui_message);
247 ui_stat_selNoWidget = ui_xCreateLabelItem("*", form, 8*ui_labelFontWidth,
248 label,ui_message);
249 label = ui_xCreateLabelItem("flags",form,20,ui_stat_selNoWidget,ui_message);
250 ui_stat_flagsWidget = ui_xCreateLabelItem("*",form, 15*ui_labelFontWidth,
251 label,ui_message);
252
253 XawFormDoLayout(ui_infoBox, True);
254
255 XtAddEventHandler(ui_infoBox,KeyPressMask,FALSE,
256 (XtEventHandler)ui_key_control, (Cardinal *) 0);
257
258
259 }
260
261
262 /*****************************************************************************
263 FUNCTION : ui_clickEventProc
264
265 PURPOSE :
266 RETURNS : void
267 NOTES :
268
269 UPDATE : 11.2..1992
270 ******************************************************************************/
ui_clickEventProc(Widget w,Display * display,XEvent * event)271 static void ui_clickEventProc (Widget w, Display *display, XEvent *event)
272 {
273 switch (event->type) {
274 case ButtonPress:
275 if (event->xbutton.button == 1)
276 XtDestroyWidget (w);
277 break;
278 }
279 }
280
281
282 /*****************************************************************************
283 FUNCTION : ui_showBanner
284
285 PURPOSE : display Title Page
286 RETURNS : void
287 NOTES :
288
289 UPDATE : 11.2..1992
290 ******************************************************************************/
ui_showBanner(Widget parent)291 static void ui_showBanner (Widget parent)
292 {
293 int n;
294 Arg arg[10];
295 Widget banner, frame;
296 int xwsize = snns_width;
297 int ywsize = snns_height;
298 unsigned int xsize, ysize;
299
300 d3_getRootSizes (&xsize, &ysize);
301 n = 0;
302
303 XtSetArg (arg[n], XtNwidth, xwsize); n++;
304 XtSetArg (arg[n], XtNheight, ywsize); n++;
305 XtSetArg (arg[n], XtNx, (xsize - xwsize) / 2); n++;
306 XtSetArg (arg[n], XtNy, (ysize - ywsize) / 2); n++;
307 banner = XtCreatePopupShell ("banner", transientShellWidgetClass,
308 parent, arg, (unsigned int) n);
309 n = 0;
310 XtSetArg (arg[n], XtNbitmap,
311 (Pixmap) XCreateBitmapFromData (ui_display,
312 XDefaultRootWindow (ui_display),
313 snns_bits, snns_width, snns_height)); n++;
314 frame = XtCreateManagedWidget("", labelWidgetClass,
315 banner, arg, (unsigned int) n);
316 XtAddEventHandler (banner, ButtonPressMask,
317 FALSE, (XtEventHandler) ui_clickEventProc, ui_display);
318 XtPopup (banner, XtGrabNone);
319 ui_xDontResizeWidget(banner);
320 }
321
322
323 /*****************************************************************************
324 FUNCTION : main
325
326 PURPOSE : construct all widgets and windows, realize them
327 RETURNS : void
328 NOTES :
329
330 UPDATE : 1.4.1990
331 ******************************************************************************/
332 #include <floatingpoint.h>
main(int argc,char ** argv)333 int main (int argc, char **argv)
334 {
335 fpsetmask(0);
336 ui_toplevel = XtAppInitialize(&ui_appContext, "Popup", NULL, ZERO,
337 (int *) &argc, argv, fallback_resources,
338 NULL, ZERO);
339
340 #ifdef PARAGON_KERNEL
341 krip_Init();
342 #endif
343 ui_init();
344 ui_parseCmdLine(argc, argv);
345 ui_colVar_init();
346 ui_xCreatePanel();
347 XtRealizeWidget(ui_toplevel);
348 ui_screen = DefaultScreen(ui_display);
349 ui_xDontResizeWidget(ui_toplevel);
350 ui_xCreateGC(XtWindow(ui_toplevel));
351 XStoreName(ui_display, XtWindow(ui_toplevel),
352 "SNNS Manager Panel");
353 ui_showBanner (ui_toplevel);
354 ui_col_init();
355 d3_init_main ();
356 ui_defaultPrinterValues();
357 ui_loadFileFromCommandLine();
358 XtAppMainLoop(ui_appContext);
359 }
360 /* end of file */
361