1 /*****************************************************************************
2 FILE : $Source: /projects/higgs1/SNNS/CVS/SNNS/xgui/sources/cc_main.c,v $
3 SHORTNAME : cc_main.c
4 SNNS VERSION : 4.2
5
6 PURPOSE : Creates the CASCADE-window.
7 NOTES :
8
9 AUTHOR : Michael Schmalzl, modified by Christian Wehrfritz (PCC)
10 DATE : 23.2.93
11
12 CHANGED BY : Michael Schmalzl
13 RCS VERSION : $Revision: 2.18 $
14 LAST CHANGE : $Date: 1998/04/22 16:08:33 $
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 #include <X11/Intrinsic.h>
22 #include <X11/Xaw3d/Box.h>
23 #include <X11/Xaw3d/Form.h>
24 #include <X11/Xaw3d/SmeBSB.h>
25 #include <X11/Xaw3d/Cardinals.h>
26 #include <X11/Xaw3d/SimpleMenu.h>
27
28
29 #include "ui.h"
30 #include "ui_xWidgets.h"
31 #include "kr_ui.h"
32 #include "ui_display.h"
33 #include "ui_main.h"
34 #include "ui_mainP.h"
35 #include "ui_confirmer.h"
36 #include "cc_type.h"
37 #include "cc_mac.h"
38 #include "cc_glob.h"
39 #include "ui_control.h"
40 #include "ui_key.h"
41 #include "ui_netUpdate.h"
42
43 #include "cc_main.ph"
44
45 /*****************************************************************************
46 FUNCTION :cc_centerString
47
48 PURPOSE :
49 NOTES :
50
51 UPDATE : 24.10.96
52 ******************************************************************************/
cc_centerString(char * string,int length1,int length2)53 static void cc_centerString(char *string, int length1, int length2)
54 {
55 int i,difference,move;
56
57 if((difference=(length2 - length1)) >=2) {
58 move = difference / 2;
59 for(i=length1-1;i>=0;i--) {
60 string[i+move] = string[i];
61 }
62 for(i=0;i<move;i++){
63 string[i] = ' ';
64 }
65 }
66 }
67
68
69 /*****************************************************************************
70 FUNCTION : cc_selectActFuncCand
71
72 PURPOSE :
73 NOTES :
74
75 UPDATE : 24.10.96
76 ******************************************************************************/
cc_selectActFuncCand(Widget w,int value,caddr_t call_data)77 static void cc_selectActFuncCand(Widget w, int value, caddr_t call_data)
78 {
79 switch(value) {
80 case ASYM_SIGMOID: ui_xSetLabel(cc_w10b,"Logistic");
81 break;
82 case SYM_SIGMOID : ui_xSetLabel(cc_w10b," LogSym ");
83 break;
84 case TANH : ui_xSetLabel(cc_w10b," TanH ");
85 break;
86 case RANDOM : ui_xSetLabel(cc_w10b," Random ");
87 break;
88 case SINUS : ui_xSetLabel(cc_w10b," Sinus ");
89 break;
90 case EXPONENTIAL : ui_xSetLabel(cc_w10b," Gauss ");
91 break;
92 }
93 cc_data.CAND.actFunc = cc_candActFunc = value;
94 }
95
96
97 /*****************************************************************************
98 FUNCTION :cc_selectOnOff
99
100 PURPOSE :
101 NOTES :
102
103 UPDATE : 24.10.96
104 ******************************************************************************/
cc_selectOnOff(Widget w,int value,caddr_t call_data)105 static void cc_selectOnOff(Widget w, int value, caddr_t call_data)
106 {
107 if((w == cc_covB[0]) || (w == cc_covB[1]))
108 ui_setToggles(value, &cc_data.GLOBAL.onOff, 2, cc_covB);
109 if((w == cc_cacheB[0]) || (w == cc_cacheB[1]))
110 ui_setToggles(value, &cc_data.GLOBAL.fastmode, 2, cc_cacheB);
111 if((w == cc_pruneB[0]) || (w == cc_pruneB[1]))
112 ui_setToggles(value, &cc_data.GLOBAL.pruneOnOff, 2, cc_pruneB);
113 }
114
115
116 /*****************************************************************************
117 FUNCTION : cc_selectLearningFunc
118
119 PURPOSE :
120 NOTES :
121
122 UPDATE : 24.10.96
123 ******************************************************************************/
cc_selectLearningFunc(Widget w,int value,caddr_t call_data)124 static void cc_selectLearningFunc(Widget w, int value, caddr_t call_data)
125 {
126 switch(value) {
127 case QUICKPROP : ui_xSetLabel(cc_w11b," Quickprop ");
128 break;
129 case BACKPROP : ui_xSetLabel(cc_w11b," Batch-BP ");
130 break;
131 case RPROP : ui_xSetLabel(cc_w11b," Rprop ");
132 break;
133 case BACKPROP_ONLINE : ui_xSetLabel(cc_w11b," Backprop ");
134 }
135 cc_data.GLOBAL.learningFunc = cc_learningFunc = value;
136 }
137
138 /*****************************************************************************
139 FUNCTION : cc_selectModification
140
141 PURPOSE :
142 NOTES :
143
144 UPDATE : 24.10.96
145 ******************************************************************************/
cc_selectModification(Widget w,int value,caddr_t call_data)146 static void cc_selectModification(Widget w, int value, caddr_t call_data)
147 {
148 switch(value) {
149 case CC_NO_MOD:
150 ui_xSetLabel(cc_w20b," none ");
151 break;
152 case CC_SDCC:
153 ui_xSetLabel(cc_w20b," SDCC ");
154 break;
155 case CC_LFCC:
156 ui_xSetLabel(cc_w20b," LFCC ");
157 break;
158 case CC_ECC:
159 ui_xSetLabel(cc_w20b," ECC ");
160 break;
161 case CC_GCC:
162 ui_xSetLabel(cc_w20b," GCC ");
163 break;
164 case CC_STAT:
165 ui_xSetLabel(cc_w20b,"Static");
166 break;
167 case CC_RLCC:
168 ui_xSetLabel(cc_w20b," RLCC ");
169 break;
170 }
171 cc_data.GLOBAL.modification = cc_modification = value;
172 }
173
174 /*****************************************************************************
175 FUNCTION : cc_selectPruneFunc
176
177 PURPOSE :
178 NOTES :
179
180 UPDATE : 24.10.96
181 ******************************************************************************/
cc_selectPruneFunc(Widget w,int value,caddr_t call_data)182 static void cc_selectPruneFunc(Widget w, int value, caddr_t call_data)
183 {
184 switch(value) {
185 case SBC: ui_xSetLabel(cc_pfb," SBC ");
186 break;
187 case AIC: ui_xSetLabel(cc_pfb," AIC ");
188 break;
189 case CMSEP: ui_xSetLabel(cc_pfb,"CMSEP");
190 break;
191 }
192 cc_data.GLOBAL.pruneFunc = cc_pruneFunc = value;
193 }
194
195
196 /*****************************************************************************
197 FUNCTION : cc_readElements
198
199 PURPOSE :
200 NOTES :
201
202 UPDATE : 24.10.96
203 ******************************************************************************/
cc_readElements(void)204 void cc_readElements(void)
205 {
206 int i;
207
208 if((cc_learningFunc == -1) || (cc_candActFunc == -1) ||
209 (cc_pruneFunc == -1)) {
210 cc_pruneFunc = cc_data.GLOBAL.pruneFunc;
211 cc_backfittOnOff= cc_data.GLOBAL.backfittOnOff;
212 cc_learningFunc = cc_data.GLOBAL.learningFunc;
213 cc_candActFunc = cc_data.CAND.actFunc;
214 cc_modification = cc_data.GLOBAL.modification;
215 }
216
217 if(cc_open) {
218 cc_data.GLOBAL.pixelError = ui_xFloatFromAsciiWidget(cc_w9b);
219 cc_data.GLOBAL.learningFunc = cc_learningFunc;
220 cc_data.GLOBAL.pruneFunc = cc_pruneFunc;
221 cc_data.GLOBAL.modification = cc_modification;
222 cc_data.GLOBAL.addParameters[0] = ui_xFloatFromAsciiWidget(cc_w21c);
223 cc_data.GLOBAL.addParameters[1] = ui_xFloatFromAsciiWidget(cc_w21d);
224 cc_data.GLOBAL.addParameters[2] = ui_xFloatFromAsciiWidget(cc_w21e);
225 cc_data.GLOBAL.addParameters[3] = ui_xFloatFromAsciiWidget(cc_w21f);
226 cc_data.GLOBAL.addParameters[4] = ui_xFloatFromAsciiWidget(cc_w21g);
227 cc_data.CAND.covarianceChange = ui_xFloatFromAsciiWidget(cc_w1b);
228 cc_data.CAND.candidatePatience = ui_xIntFromAsciiWidget(cc_w2b);
229 cc_data.CAND.maxNoOfUpdateCycles = ui_xIntFromAsciiWidget(cc_w3b);
230 cc_data.CAND.maxNoOfCandUnits = ui_xIntFromAsciiWidget(cc_w7b);
231 cc_data.CAND.actFunc = cc_candActFunc;
232 cc_data.OUT.errorChange = ui_xFloatFromAsciiWidget(cc_w4b);
233 cc_data.OUT.outputPatience = ui_xIntFromAsciiWidget(cc_w5b);
234 cc_data.OUT.maxNoOfUpdateCycles = ui_xIntFromAsciiWidget(cc_w6b);
235 }
236 ui_learnParameters[6] = cc_data.GLOBAL.pixelError;
237 ui_learnParameters[7] = (float)cc_data.GLOBAL.learningFunc;
238 ui_learnParameters[8] = (float)cc_data.GLOBAL.onOff;
239
240 ui_learnParameters[9] = cc_data.CAND.covarianceChange;
241 ui_learnParameters[10] = cc_data.CAND.candidatePatience;
242 ui_learnParameters[11] = cc_data.CAND.maxNoOfUpdateCycles;
243 ui_learnParameters[12] = cc_data.CAND.maxNoOfCandUnits;
244 ui_learnParameters[13] = (float)cc_data.CAND.actFunc;
245
246 ui_learnParameters[14] = cc_data.OUT.errorChange;
247 ui_learnParameters[15] = cc_data.OUT.outputPatience;
248 ui_learnParameters[16] = cc_data.OUT.maxNoOfUpdateCycles;
249
250 ui_learnParameters[17] = (float)cc_data.GLOBAL.pruneOnOff;
251 ui_learnParameters[18] = (float)cc_data.GLOBAL.backfittOnOff;
252 ui_learnParameters[19] = cc_data.GLOBAL.backfittPatience;
253 ui_learnParameters[20] = cc_data.GLOBAL.pruneFunc;
254 ui_learnParameters[21] = (float)cc_data.GLOBAL.modification;
255
256 for (i=0;i<5;i++)
257 ui_learnParameters[22+i] = cc_data.GLOBAL.addParameters[i];
258
259 ui_learnParameters[27] = (float)cc_data.GLOBAL.fastmode;
260
261 }
262
263 /*****************************************************************************
264 FUNCTION : cc_doneProc
265
266 PURPOSE : callback function of the done-button. You are leaving CC.
267 The storage is deallocated.
268 NOTES :
269
270 UPDATE : 3.4.1992
271 ******************************************************************************/
cc_doneProc(void)272 static void cc_doneProc(void)
273 {
274 cc_readElements();
275 XtDestroyWidget(cc_mainWidget);
276 cc_open = 0;
277 }
278
279
280
281 /*****************************************************************************
282 FUNCTION : cc_createCandidatePannel
283
284 PURPOSE : creates the candidate pannel, which is part of the CC-window
285 NOTES :
286
287 UPDATE : 5.10.92
288 ******************************************************************************/
cc_createCandidatePannel(Widget parent)289 static void cc_createCandidatePannel (Widget parent)
290 {
291 Widget form, menu, mItem, label, top_label;
292 Arg arg[25];
293 Cardinal n;
294 char buf[20];
295
296 n = 0;
297 form = XtCreateManagedWidget ("pannel", formWidgetClass, parent, arg, n);
298
299 top_label = ui_xCreateLabelItem(" Parameters for Candidate Units",
300 form, 35*ui_labelFontWidth, NULL, NULL);
301 label = ui_xCreateLabelItem("Min. covariance change: ",form,
302 30*ui_labelFontWidth,NULL,top_label);
303 sprintf(buf,"%.3f",cc_data.CAND.covarianceChange);
304 cc_w1b = ui_xCreateDialogItem ("cc_w1b",form,buf,6*ui_labelFontWidth,
305 label, top_label);
306
307 label = ui_xCreateLabelItem("Candidate patience: ",form,
308 30*ui_labelFontWidth,NULL,cc_w1b);
309 sprintf(buf,"%d",cc_data.CAND.candidatePatience);
310 cc_w2b = ui_xCreateDialogItem ("cc_w2b",form,buf,6*ui_labelFontWidth,
311 label,cc_w1b);
312
313 label = ui_xCreateLabelItem("Max. no. of covariance updates: ",form,
314 30*ui_labelFontWidth,NULL,cc_w2b);
315 sprintf(buf,"%d",cc_data.CAND.maxNoOfUpdateCycles);
316 cc_w3b = ui_xCreateDialogItem ("cc_w3b",form,buf,6*ui_labelFontWidth,
317 label,cc_w2b);
318
319 label = ui_xCreateLabelItem("Max. no. of candidate units: ",form,
320 30*ui_labelFontWidth,NULL,cc_w3b);
321 sprintf(buf,"%d",cc_data.CAND.maxNoOfCandUnits);
322 cc_w7b = ui_xCreateDialogItem ("cc_w7b",form,buf,6*ui_labelFontWidth,
323 label, cc_w3b);
324
325 label = ui_xCreateLabelItem("Activation function: ",form,
326 29*ui_labelFontWidth,NULL,cc_w7b);
327 sprintf(buf,"%8s",cc_actFuncArray2[cc_data.CAND.actFunc]);
328 cc_w10b = ui_xCreateMenuButtonItem (buf,form,label,cc_w7b);
329
330 menu = XtCreatePopupShell("menu",simpleMenuWidgetClass,cc_w10b,
331 NULL,ZERO);
332 mItem = XtCreateManagedWidget("Logistic", smeBSBObjectClass,
333 menu,NULL,ZERO);
334 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectActFuncCand,
335 ASYM_SIGMOID);
336 mItem = XtCreateManagedWidget("LogSym", smeBSBObjectClass,
337 menu,NULL,ZERO);
338 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectActFuncCand,
339 (caddr_t)SYM_SIGMOID);
340 mItem = XtCreateManagedWidget("TanH", smeBSBObjectClass,menu,
341 NULL,ZERO);
342 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectActFuncCand,
343 (caddr_t)TANH);
344 mItem = XtCreateManagedWidget("Sinus", smeBSBObjectClass,menu,
345 NULL,ZERO);
346 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectActFuncCand,
347 (caddr_t)SINUS);
348 mItem = XtCreateManagedWidget("Gauss", smeBSBObjectClass,menu,
349 NULL,ZERO);
350 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectActFuncCand,
351 (caddr_t)EXPONENTIAL);
352 mItem = XtCreateManagedWidget("Random", smeBSBObjectClass,menu,
353 NULL,ZERO);
354 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectActFuncCand,
355 (caddr_t)RANDOM);
356
357 }
358
359
360
361 /*****************************************************************************
362 FUNCTION : cc_creatOutputPannel
363
364 PURPOSE : creates the output pannel, which is part of the CC-window
365 NOTES :
366
367 UPDATE : 5.10.92
368 ******************************************************************************/
cc_createOutputPannel(Widget parent)369 static void cc_createOutputPannel (Widget parent)
370 {
371 Widget form, label, top_label;
372 Arg arg[25];
373 Cardinal n;
374 char buf[10];
375
376 n = 0;
377 form = XtCreateManagedWidget ("pannel", formWidgetClass, parent, arg, n);
378
379 top_label = ui_xCreateLabelItem(" Parameters for Output Units",
380 form, 35*ui_labelFontWidth, NULL, NULL);
381
382 label = ui_xCreateLabelItem("Error change: ",form,
383 30*ui_labelFontWidth, NULL, top_label);
384 sprintf(buf,"%.3f",cc_data.OUT.errorChange);
385 cc_w4b = ui_xCreateDialogItem ("cc_w4b",form,buf,
386 6*ui_labelFontWidth,label, top_label);
387
388 label = ui_xCreateLabelItem("Output patience: ",form,
389 30*ui_labelFontWidth,NULL,cc_w4b);
390 sprintf(buf,"%d",cc_data.OUT.outputPatience);
391 cc_w5b = ui_xCreateDialogItem ("cc_w5b",form,buf,
392 6*ui_labelFontWidth, label, cc_w4b);
393
394 label = ui_xCreateLabelItem("Max. no. of epochs: ",form,
395 30*ui_labelFontWidth,NULL,cc_w5b);
396 sprintf(buf,"%d",cc_data.OUT.maxNoOfUpdateCycles);
397 cc_w6b = ui_xCreateDialogItem ("cc_w6b",form,buf,
398 6*ui_labelFontWidth, label, cc_w5b);
399
400 }
401
402 /*****************************************************************************
403 FUNCTION : cc_createGlobalPannel
404
405 PURPOSE : creates the global pannel, which is part of the CC-window
406 NOTES :
407
408 UPDATE : 5.10.92
409 ******************************************************************************/
cc_createGlobalPannel(Widget parent)410 static void cc_createGlobalPannel (Widget parent)
411 {
412 Widget form,menu,mItem,label,top_label;
413 Arg arg[25];
414 Cardinal n;
415 char buf[30];
416 int length1;
417
418 n = 0;
419 form = XtCreateManagedWidget("pannel", formWidgetClass, parent, arg, n);
420
421 top_label = ui_xCreateLabelItem(" General Parameters for Cascade",
422 form, 35*ui_labelFontWidth, NULL, NULL);
423
424 label = ui_xCreateLabelItem("Max. output unit error: ",form,
425 26*ui_labelFontWidth,NULL,top_label);
426 sprintf(buf,"%.3f",cc_data.GLOBAL.pixelError);
427 cc_w9b = ui_xCreateDialogItem ("cc_w9b",form,buf,10*ui_labelFontWidth,
428 label, top_label);
429
430 label = ui_xCreateLabelItem("Learning function: ",form,26*ui_labelFontWidth,
431 NULL,cc_w9b);
432 sprintf(buf,"%11s",cc_learningFuncArray[cc_data.GLOBAL.learningFunc]);
433 cc_w11b = ui_xCreateMenuButtonItem(buf,form,label,cc_w9b);
434
435 menu = XtCreatePopupShell("menu",simpleMenuWidgetClass,cc_w11b,
436 NULL,ZERO);
437
438 mItem = XtCreateManagedWidget("Batch-Backprop", smeBSBObjectClass,
439 menu,NULL,ZERO);
440 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectLearningFunc,
441 (caddr_t)BACKPROP);
442 mItem = XtCreateManagedWidget("Std_Backpropagation", smeBSBObjectClass,
443 menu, NULL, ZERO);
444 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectLearningFunc,
445 (caddr_t)BACKPROP_ONLINE);
446 mItem = XtCreateManagedWidget("Quickprop", smeBSBObjectClass,menu,
447 NULL,ZERO);
448 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectLearningFunc,
449 (caddr_t)QUICKPROP);
450 mItem = XtCreateManagedWidget("Rprop", smeBSBObjectClass,menu,NULL,ZERO);
451 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectLearningFunc,
452 (caddr_t)RPROP);
453
454 label = ui_xCreateLabelItem("Modification: ",form,26*ui_labelFontWidth,
455 NULL,cc_w11b);
456 length1 = strlen(cc_ModificationArray[cc_data.GLOBAL.modification]);
457 sprintf(buf,"%-11s",cc_ModificationArray[cc_data.GLOBAL.modification]);
458 cc_centerString(buf,length1,9);
459 cc_w20b = ui_xCreateMenuButtonItem(buf,form,label,cc_w11b);
460
461 menu = XtCreatePopupShell("menu",simpleMenuWidgetClass,cc_w20b,
462 NULL,ZERO);
463 mItem = XtCreateManagedWidget("none",smeBSBObjectClass,menu,NULL,ZERO);
464 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectModification,
465 (caddr_t)CC_NO_MOD);
466 mItem = XtCreateManagedWidget("Sibling/Descendant CC",smeBSBObjectClass,
467 menu,NULL,ZERO);
468 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectModification,
469 (caddr_t)CC_SDCC);
470 mItem = XtCreateManagedWidget("Limited Fan-In Random Wired CC",
471 smeBSBObjectClass,menu,NULL,ZERO);
472 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectModification,
473 (caddr_t)CC_LFCC);
474 mItem = XtCreateManagedWidget("Random Layer CC",smeBSBObjectClass,
475 menu,NULL,ZERO);
476 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectModification,
477 (caddr_t)CC_RLCC);
478 mItem = XtCreateManagedWidget("Static",smeBSBObjectClass,menu,NULL,ZERO);
479 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectModification,
480 (caddr_t)CC_STAT);
481 mItem = XtCreateManagedWidget("Exponential CC",smeBSBObjectClass,menu,
482 NULL,ZERO);
483 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectModification,
484 (caddr_t)CC_ECC);
485 mItem = XtCreateManagedWidget("Grouped CC",smeBSBObjectClass,menu,
486 NULL,ZERO);
487 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectModification,
488 (caddr_t)CC_GCC);
489
490 /* creating toggle widget for printing information to the shell */
491 label = ui_xCreateLabelItem("Print covariance and error ?",form,
492 26*ui_labelFontWidth,NULL,cc_w20b);
493 cc_covB[1] = ui_xCreateToggleItem("yes", form, NULL, label, cc_w20b);
494 ui_xSetToggleState (cc_covB[1], cc_data.GLOBAL.onOff);
495 XtAddCallback (cc_covB[1], XtNcallback, (XtCallbackProc)cc_selectOnOff,
496 (caddr_t) ON);
497 cc_covB[0] = ui_xCreateToggleItem("no", form, NULL, cc_covB[1], cc_w20b);
498 ui_xSetToggleState(cc_covB[0], !cc_data.GLOBAL.onOff);
499 XtAddCallback(cc_covB[0], XtNcallback, (XtCallbackProc)cc_selectOnOff,
500 (caddr_t) OFF);
501
502 /* creating toggle widget for caching activations */
503 label = ui_xCreateLabelItem("Cache the unit activations ?", form,
504 26*ui_labelFontWidth, NULL, cc_covB[1]);
505 cc_cacheB[1] = ui_xCreateToggleItem("yes", form, NULL, label, cc_covB[1]);
506 ui_xSetToggleState (cc_cacheB[1], cc_data.GLOBAL.fastmode);
507 XtAddCallback (cc_cacheB[1], XtNcallback, (XtCallbackProc)cc_selectOnOff,
508 (caddr_t) ON);
509 cc_cacheB[0] = ui_xCreateToggleItem("no", form, NULL,
510 cc_cacheB[1], cc_covB[1]);
511 ui_xSetToggleState(cc_cacheB[0], !cc_data.GLOBAL.fastmode);
512 XtAddCallback(cc_cacheB[0], XtNcallback, (XtCallbackProc)cc_selectOnOff,
513 (caddr_t) OFF);
514
515 /* creating toggle widget for new hidden pruning */
516 label = ui_xCreateLabelItem("Prune new hidden unit ?", form,
517 26*ui_labelFontWidth, NULL, cc_cacheB[1]);
518 cc_pruneB[1] = ui_xCreateToggleItem("yes", form, NULL, label, cc_cacheB[1]);
519 ui_xSetToggleState (cc_pruneB[1], cc_data.GLOBAL.pruneOnOff);
520 XtAddCallback (cc_pruneB[1], XtNcallback, (XtCallbackProc)cc_selectOnOff,
521 (caddr_t) ON);
522 cc_pruneB[0] = ui_xCreateToggleItem("no", form, NULL,
523 cc_pruneB[1], cc_cacheB[1]);
524 ui_xSetToggleState(cc_pruneB[0], !cc_data.GLOBAL.pruneOnOff);
525 XtAddCallback(cc_pruneB[0], XtNcallback, (XtCallbackProc)cc_selectOnOff,
526 (caddr_t) OFF);
527
528 label = ui_xCreateLabelItem("Minimize: ",form,26*ui_labelFontWidth,NULL,
529 cc_pruneB[1]);
530 length1 = strlen(cc_pruningFuncArray[cc_data.GLOBAL.pruneFunc]);
531 sprintf(buf,"%-11s",cc_pruningFuncArray[cc_data.GLOBAL.pruneFunc]);
532 cc_centerString(buf,length1,9);
533 cc_pfb = ui_xCreateMenuButtonItem(buf,form,label,cc_pruneB[1]);
534
535 menu = XtCreatePopupShell("menu",simpleMenuWidgetClass,cc_pfb,
536 NULL,ZERO);
537
538 mItem= XtCreateManagedWidget(" SBC ", smeBSBObjectClass,menu,NULL,ZERO);
539 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectPruneFunc,
540 (caddr_t)SBC);
541 mItem= XtCreateManagedWidget(" AIC ", smeBSBObjectClass,menu,NULL,ZERO);
542 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectPruneFunc,
543 (caddr_t)AIC);
544 mItem= XtCreateManagedWidget(" CMSEP ", smeBSBObjectClass,menu,NULL,ZERO);
545 XtAddCallback(mItem,XtNcallback,(XtCallbackProc)cc_selectPruneFunc,
546 (caddr_t)CMSEP);
547
548 label = ui_xCreateLabelItem("Additional Parameters ",form,
549 24*ui_labelFontWidth, NULL, cc_pfb);
550 sprintf(buf,"%.3f",cc_data.GLOBAL.addParameters[0]);
551 cc_w21b = ui_xCreateLabelItem("",form,
552 1*ui_labelFontWidth, NULL, label);
553 cc_w21c = ui_xCreateDialogItem ("cc_w21c",form,buf,6*ui_labelFontWidth,
554 cc_w21b, label);
555 sprintf(buf,"%.3f",cc_data.GLOBAL.addParameters[1]);
556 cc_w21d = ui_xCreateDialogItem ("cc_w21d",form,buf,6*ui_labelFontWidth,
557 cc_w21c, label);
558 sprintf(buf,"%.3f",cc_data.GLOBAL.addParameters[2]);
559 cc_w21e = ui_xCreateDialogItem ("cc_w21e",form,buf,6*ui_labelFontWidth,
560 cc_w21d, label);
561 sprintf(buf,"%.3f",cc_data.GLOBAL.addParameters[3]);
562 cc_w21f = ui_xCreateDialogItem ("cc_w21f",form,buf,6*ui_labelFontWidth,
563 cc_w21e, label);
564 sprintf(buf,"%.3f",cc_data.GLOBAL.addParameters[4]);
565 cc_w21g = ui_xCreateDialogItem ("cc_w21g",form,buf,6*ui_labelFontWidth,
566 cc_w21f, label);
567 }
568
569
570 /*****************************************************************************
571 FUNCTION : cc_createWindow
572
573 PURPOSE : creates the CC-window
574 NOTES :
575
576 UPDATE : 5.10.92
577 ******************************************************************************/
cc_createWindow(void)578 void cc_createWindow (void)
579 {
580 Widget done,box;
581 Arg arg[25];
582 Cardinal n;
583 char buf[40];
584
585 if(!cc_open) {
586 cc_open = 1;
587 sprintf (buf, "SNNS Cascade");
588 n = 0;
589 cc_mainWidget = XtCreatePopupShell(buf,topLevelShellWidgetClass,
590 ui_toplevel,arg,n);
591
592 n = 0;
593 box = XtCreateManagedWidget("box",boxWidgetClass,cc_mainWidget,arg,n);
594
595 cc_createGlobalPannel(box);
596 cc_createCandidatePannel (box);
597 cc_createOutputPannel(box);
598
599 done = ui_xCreateButtonItem ("done",box,NULL,NULL);
600 XtAddCallback(done,XtNcallback,(XtCallbackProc)cc_doneProc,NULL);
601
602 XtAddEventHandler(box,KeyPressMask,FALSE,
603 (XtEventHandler)ui_key_control,(Cardinal *) 0);
604 ui_checkWindowPosition(cc_mainWidget);
605 XtPopup (cc_mainWidget, XtGrabNone);
606 ui_xDontResizeWidget(cc_mainWidget);
607 } else {
608 XRaiseWindow (XtDisplay (cc_mainWidget), XtWindow (cc_mainWidget));
609 }
610 }
611
612