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