Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / xtas / xtas_detpath.c
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI Alliance */
4 /* */
5 /* Produit : XTAS Version 5 */
6 /* Fichier : xtas_detpath.c */
7 /* */
8 /* (c) copyright 1991-1998 Laboratoire LIP6 equipe ASIM */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
11 /* */
12 /* Author(s) : Nizar ABDALLAH Date : 01/04/1993 */
13 /* */
14 /* Modified by : Date : ../../.... */
15 /* Modified by : Date : ../../.... */
16 /* Modified by : Date : ../../.... */
17 /* */
18 /****************************************************************************/
19 /* */
20 /* */
21 /****************************************************************************/
22
23
24 /*--------------------------------------------------------------------------*/
25 /* INCLUDE FILES */
26 /*--------------------------------------------------------------------------*/
27 #include "xtas.h"
28 #include "xtas_detpath_menu.h"
29 #include "xtas_detpath_button.h"
30
31 #define XTAS_DETAIL_FROM_LOFFSET_G 8
32 #define XTAS_DETAIL_TP_LOFFSET_T 6
33
34 extern char XTAS_SIMU_RES;
35 /*--------------------------------------------------------------------------*/
36 /* WORK VARIABLES */
37 /*--------------------------------------------------------------------------*/
38 static char *tas_current_signal = NULL ;
39 static XtasDetailPathSetStruct *xtas_current_detail = NULL ;
40 chain_list *XTAS_DETPATH_SESSION = NULL ;
41 //static char DisableInfo ;
42 XtasWindowStruct *XtasDetailwidtab = NULL;
43 Widget XTAS_DETPATHSELECTEDWIDGET = NULL;
44
45 extern char STBCTK;
46 /*---------------------------------------------------------------------------*/
47 /* FUNCTIONS */
48 /*---------------------------------------------------------------------------*/
49 /*---------------------------------------------------------------------------*/
50 /* */
51 /* FUNCTION : XtasDetailColumnsTitleMoveWithHSBCallback */
52 /* */
53 /*---------------------------------------------------------------------------*/
54 void XtasDetailColumnsTitleMoveWithHSBCallback (hsb, label, call_data)
55 Widget hsb;
56 XtPointer label;
57 XtPointer call_data;
58 {
59 int loffset;
60 int value;
61
62 if (XTAS_DISPLAY_NEW == 0)
63 loffset = XTAS_DETAIL_FROM_LOFFSET_G;
64 else
65 loffset = XTAS_DETAIL_TP_LOFFSET_T;
66
67 XtVaGetValues (hsb, XmNvalue, &value, NULL);
68
69 XtVaSetValues (label, XmNleftOffset, (loffset - value), NULL);
70 }
71
72 /*---------------------------------------------------------------------------*/
73 void XtasRemoveDetailPathSession(window)
74 XtasWindowStruct *window ;
75 {
76 chain_list *head = XTAS_DETPATH_SESSION;
77 XtasWindowStruct *data;
78 XtasDetailPathSetStruct *detail_set;
79 chain_list *chain ;
80
81 if(head != NULL)
82 {
83 for(; head != NULL; head = head->NEXT )
84 {
85 data = head->DATA;
86 if((window == NULL) || (window == data))
87 {
88 detail_set = data->userdata;
89 if(detail_set->PARENT != NULL)
90 {
91 for(chain = detail_set->PARENT->DETAIL_SESSION ; chain != NULL;
92 chain = chain->NEXT )
93 {
94 if(chain->DATA == window) {
95 chain->DATA = NULL ;
96 XtasDestroySimuParams ();
97 }
98 }
99 }
100 XtasFreeDetailPathSetStruct(detail_set);
101 XtDestroyWidget( data->topwidget );
102 mbkfree(data);
103 if(window == data)
104 break ;
105 }
106 }
107 if(window == NULL)
108 {
109 freechain( XTAS_DETPATH_SESSION );
110 XTAS_DETPATH_SESSION = NULL;
111 }
112 else if(head != NULL)
113 XTAS_DETPATH_SESSION = delchain(XTAS_DETPATH_SESSION,head) ;
114 if (XtasVisualPathWidget) {
115 XtDestroyWidget (XtasVisualPathWidget);
116 XtasVisualPathWidget = NULL;
117 }
118 if (XtasSimuParamWidget) {
119 XtDestroyWidget (XtasSimuParamWidget);
120 XtasSimuParamWidget = NULL;
121 }
122 }
123 XTAS_DETPATHSELECTEDWIDGET = NULL;
124 }
125
126 /*---------------------------------------------------------------------------*/
127 void XtasSaveDetail(file,detailset,infos)
128 FILE *file ;
129 XtasDetailPathSetStruct *detailset ;
130 long infos;
131 {
132 chain_list *head = (chain_list *)detailset->CUR_DETAIL->DATA ;
133 ttvcritic_list * critic ;
134 ttvcritic_list *auxcritic ;
135 char type ;
136 long delay ;
137 long otherdelay ;
138 char slope1 ;
139 char slope2 ;
140 char *name1 ;
141 char *name2 ;
142 char *typedelay ;
143 long slope ;
144 long otherslope ;
145 long cumul = 0 ;
146 long othercumul = 0 ;
147 int sizetype ;
148 int sizedelay ;
149 int sizeotherdelay ;
150 int sizeslope ;
151 int sizeotherslope ;
152 int sizecumul ;
153 int sizeothercumul ;
154 int sizename1 ;
155 int sizename2 ;
156 int i ;
157
158 if(detailset->PARENT != NULL)
159 {
160 if(detailset->PARENT->PARAM->CRITIC == 'Y')
161 type = 'm' ;
162 else if(detailset->PARENT->PARAM->CRITIC == 'P')
163 type = 'p' ;
164 else
165 type = 'd' ;
166 }
167 else
168 type = 'l' ;
169
170 XtasCalcSize(XtasMainParam->ttvfig,
171 &sizetype,&sizedelay,&sizeotherdelay,&sizecumul,&sizeothercumul,&sizeslope,&sizeotherslope,
172 &sizename1,&sizename2,type,head,&delay,&otherdelay,infos,
173 detailset->CUR_DETAIL->SIZE) ;
174
175 XtasPrintFirstEnd(file,sizetype,sizedelay,sizeotherdelay,sizecumul,sizeothercumul,sizeslope,sizeotherslope,
176 sizename1,sizename2,infos) ;
177 XtasPrintLinesepar(file,sizetype,sizedelay,sizeotherdelay,sizecumul,sizeothercumul,sizeslope,sizeotherslope,
178 sizename1,sizename2) ;
179
180 i = 1 ;
181
182 while(head != NULL)
183 {
184 critic = (ttvcritic_list *)head->DATA ;
185 while(critic->NEXT != NULL)
186 {
187 auxcritic = critic->NEXT ;
188 if((auxcritic->TYPE & TTV_FIND_RC) == TTV_FIND_RC)
189 typedelay = "# RC" ;
190 else
191 typedelay = "# GT" ;
192 if(critic->SNODE == TTV_UP)
193 slope1 = 'U' ;
194 else
195 slope1 = 'D' ;
196 name1 = critic->NAME ;
197 if(((auxcritic->TYPE & TTV_FIND_HZ) == TTV_FIND_HZ) &&
198 (auxcritic->NEXT == NULL))
199 slope2 = 'Z' ;
200 else if(auxcritic->SNODE == TTV_UP)
201 slope2 = 'U' ;
202 else
203 slope2 = 'D' ;
204 name2 = auxcritic->NAME ;
205 if (infos == XTAS_SIMU) {
206 slope = auxcritic->REFSLOPE ;
207 delay = auxcritic->REFDELAY+critic->DATADELAY;
208 cumul += auxcritic->REFDELAY+critic->DATADELAY ;
209 otherslope = auxcritic->SIMSLOPE ;
210 otherdelay = auxcritic->SIMDELAY ;
211 othercumul += auxcritic->SIMDELAY ;
212 }
213 else if (infos == XTAS_CTK) {
214 slope = auxcritic->REFSLOPE ;
215 delay = auxcritic->REFDELAY+critic->DATADELAY ;
216 cumul += auxcritic->REFDELAY+critic->DATADELAY ;
217 otherslope = auxcritic->SLOPE ;
218 otherdelay = auxcritic->DELAY+critic->DATADELAY ;
219 othercumul += auxcritic->DELAY+critic->DATADELAY ;
220 }
221 else {
222 slope = auxcritic->SLOPE ;
223 delay = auxcritic->DELAY+critic->DATADELAY ;
224 cumul += auxcritic->DELAY+critic->DATADELAY ;
225 otherslope = 0;
226 othercumul = 0;
227 otherdelay = 0;
228 }
229 XtasPrintLine(file,typedelay,sizetype,delay,sizedelay,otherdelay,sizeotherdelay,cumul,sizecumul,othercumul,sizeothercumul,
230 slope,sizeslope,otherslope,sizeotherslope,name1,sizename1,slope1,slope2,
231 name2,sizename2) ;
232 critic = critic->NEXT ;
233 }
234 i++ ;
235 if(i > detailset->CUR_DETAIL->SIZE)
236 break ;
237 head = head->NEXT ;
238 }
239
240 XtasPrintLinesepar(file,sizetype,sizedelay,sizeotherdelay,sizecumul,sizeothercumul,sizeslope,sizeotherslope,
241 sizename1,sizename2) ;
242 XtasPrintFirstEnd(file,sizetype,sizedelay,sizeotherdelay,sizecumul,sizeothercumul,sizeslope,sizeotherslope,
243 sizename1,sizename2,infos) ;
244 fprintf(file,"\n\n") ;
245 }
246
247 /*---------------------------------------------------------------------------*/
248
249 void XtasDetailSaveCallback( widget, client_data, call_data )
250 Widget widget;
251 XtPointer client_data;
252 XtPointer call_data;
253 {
254 XtasDetailwidtab = (XtasWindowStruct *)client_data ;
255
256 XtasSelectFileCallback( widget, (XtPointer)XTAS_DETA_MAP, call_data ) ;
257 }
258
259 void XtasDetailSaveSelectFileOk (void)
260 {
261 FILE *file;
262
263 if(XtasDataFileName != NULL)
264 {
265 file = fopen(XtasDataFileName,"a") ;
266 if(file != NULL)
267 {
268 XtasSaveDetail(file,(XtasDetailPathSetStruct *)XtasDetailwidtab->userdata,XtasDetailwidtab->userinfos) ;
269 fclose(file) ;
270 }
271 else
272 {
273 XalDrawMessage( XtasErrorWidget, XTAS_NOPENFL);
274 }
275 }
276 }
277
278 /*---------------------------------------------------------------------------*/
279 /* */
280 /* FUNCTION : XtasDetailCloseCallback */
281 /* */
282 /* IN ARGS : .widget : The widget on which the event occurs. */
283 /* .top : The window toplevel widget id. */
284 /* .call_data : Not significant. */
285 /* */
286 /* OUT ARGS : ( void ) */
287 /* */
288 /* OBJECT : */
289 /* */
290 /*---------------------------------------------------------------------------*/
291 void XtasDetailCloseCallback( widget, client_data , call_data )
292 Widget widget;
293 XtPointer client_data ;
294 XtPointer call_data;
295 {
296 XtasWindowStruct *top = (XtasWindowStruct *)client_data ;
297
298 XtasRemoveDetailPathSession(top) ;
299 }
300 /*---------------------------------------------------------------------------*/
301 /* */
302 /* FUNCTION : XtasDetailCloseCallback */
303 /* */
304 /* IN ARGS : .widget : The widget on which the event occurs. */
305 /* .top : The window toplevel widget id. */
306 /* .call_data : Not significant. */
307 /* */
308 /* OUT ARGS : ( void ) */
309 /* */
310 /* OBJECT : */
311 /* */
312 /*---------------------------------------------------------------------------*/
313 //void XtasDetailSimuResCloseCallback( widget, client_data , call_data )
314 // Widget widget;
315 // XtPointer client_data ;
316 // XtPointer call_data;
317 //{
318 // XtasWindowStruct *top = (XtasWindowStruct *)client_data ;
319 //// XtDestroyWidget (top->topwidget);
320 // XtUnmanageChild (top->topwidget);
321 //}
322
323 /*---------------------------------------------------------------------------*/
324 /* */
325 /* FUNCTION : XtasDetailButtonsCallback */
326 /* */
327 /* IN ARGS : .widget : The widget on which the event occurs. */
328 /* .widtab : Table of important widgets for the current window. */
329 /* .call_data : Not significant. */
330 /* */
331 /* OUT ARGS : ( void ) */
332 /* */
333 /* OBJECT : The callback function for the Options/Button's command */
334 /* */
335 /*---------------------------------------------------------------------------*/
336 void XtasDetailButtonsCallback( widget, client_data, call_data )
337 Widget widget;
338 XtPointer client_data;
339 XtPointer call_data;
340 {
341 XtasWindowStruct *widtab = (XtasWindowStruct *)client_data ;
342 if (((XtasDetailPathSetStruct*)((XtasWindowStruct*)client_data)->userdata)->PARENT == NULL)
343 XtasOptionsButtonsTreat( widtab->wrkwidget, &widtab->butwidget,
344 XtasDetailButtonMenusDelay, XtasDetailButtonOptionsDelay );
345 else if (XTAS_SIMU_RES == 'Y')
346 XtasOptionsButtonsTreat( widtab->wrkwidget, &widtab->butwidget,
347 XtasDetailButtonMenusSimu, XtasDetailButtonOptionsSimu );
348 else
349 XtasOptionsButtonsTreat( widtab->wrkwidget, &widtab->butwidget,
350 XtasDetailButtonMenus, XtasDetailButtonOptions );
351 }
352
353 /*---------------------------------------------------------------------------*/
354 void XtasSetDetailInfo(detailset,critic)
355 XtasDetailPathSetStruct *detailset ;
356 ttvcritic_list * critic ;
357 {
358 long delay = 0, refdelay = 0;
359 char value[1024] ;
360
361 if((critic != NULL) && (detailset != NULL))
362 {
363 if ( critic->SNODE == TTV_UP )
364 XtasSetLabelString( detailset->NODE_RF, "(Rise)");
365 else
366 XtasSetLabelString( detailset->NODE_RF, "(Fall)");
367 XmTextSetString( detailset->NODE_NAME, critic->NAME );
368
369 while( critic->NEXT != NULL )
370 {
371 delay += critic->DELAY+critic->DATADELAY;
372 refdelay += critic->REFDELAY+critic->DATADELAY;
373 critic = critic->NEXT;
374 }
375 delay += critic->DELAY+critic->DATADELAY;
376 if ( critic->SNODE == TTV_UP )
377 XtasSetLabelString( detailset->ROOT_RF, "(Rise)");
378 else
379 XtasSetLabelString( detailset->ROOT_RF, "(Fall)");
380 XmTextSetString( detailset->ROOT_NAME, critic->NAME);
381 sprintf( value, "Total Delay : %.1f pS", delay/TTV_UNIT );
382 XtasSetLabelString( detailset->TOTAL_DELAY, value );
383 }
384 }
385
386 /*---------------------------------------------------------------------------*/
387 /* */
388 /* FUNCTION : XtasSelectDelayCallback */
389 /* */
390 /* IN ARGS : .widget : The widget on which the event occurs. */
391 /* .signal : The signal name, NULL if not initialized. */
392 /* .call_data : Not significant. */
393 /* */
394 /* OUT ARGS : ( void ) */
395 /* */
396 /* OBJECT : The callback function for the focus in and out. */
397 /* */
398 /*---------------------------------------------------------------------------*/
399 void XtasSelectDelayCallback( widget, client_data, call_data )
400 Widget widget;
401 XtPointer client_data;
402 XtPointer call_data;
403 {
404 if(xtas_current_detail != NULL)
405 XtasSetDetailInfo(xtas_current_detail,
406 (ttvcritic_list *)((chain_list *)client_data)->DATA) ;
407 }
408
409 /*---------------------------------------------------------------------------*/
410 /* */
411 /* FUNCTION : XtasDetailFocusCallback */
412 /* */
413 /* IN ARGS : .widget : The widget on which the event occurs. */
414 /* .signal : The signal name, NULL if not initialized. */
415 /* .call_data : Not significant. */
416 /* */
417 /* OUT ARGS : ( void ) */
418 /* */
419 /* OBJECT : The callback function for the focus in and out. */
420 /* */
421 /*---------------------------------------------------------------------------*/
422 void XtasDetailFocusCallback( widget, client_data, call_data )
423 Widget widget;
424 XtPointer client_data;
425 XtPointer call_data;
426 {
427 if(tas_current_signal != NULL)
428 {
429 XtFree( tas_current_signal) ;
430 }
431 tas_current_signal = NULL ;
432 xtas_current_detail = (XtasDetailPathSetStruct *)client_data ;
433 }
434 /*---------------------------------------------------------------------------*/
435 /* */
436 /* FUNCTION : XtasPathsDeselect */
437 /* */
438 /* OUT ARGS : ( void ) */
439 /* */
440 /*---------------------------------------------------------------------------*/
441 void XtasDetPathDeselect( widget )
442 Widget widget;
443 {
444 Pixel fg, bg;
445 Widget parent;
446
447 parent = XtParent (widget);
448 XtVaGetValues(parent, XmNbackground,&bg,NULL );
449 XtVaSetValues(widget, XmNcursorPositionVisible, False, XmNborderColor, bg, NULL) ;
450 }
451
452
453 /*---------------------------------------------------------------------------*/
454 /* */
455 /* FUNCTION : XtasDetailFocusNameCallback */
456 /* */
457 /* IN ARGS : .widget : The widget on which the event occurs. */
458 /* .signal : The signal name, NULL if not initialized. */
459 /* .call_data : Not significant. */
460 /* */
461 /* OUT ARGS : ( void ) */
462 /* */
463 /* OBJECT : The callback function for the focus in and out. */
464 /* */
465 /*---------------------------------------------------------------------------*/
466 void XtasDetailFocusNameCallback( widget, client_data, call_data )
467 Widget widget;
468 XtPointer client_data;
469 XtPointer call_data;
470 {
471 Pixel fg, bg;
472
473 if(tas_current_signal != NULL)
474 {
475 XtFree( tas_current_signal) ;
476 }
477
478 if (XTAS_DETPATHSELECTEDWIDGET != NULL)
479 XtasDetPathDeselect (XTAS_DETPATHSELECTEDWIDGET);
480
481 XTAS_DETPATHSELECTEDWIDGET = widget;
482 XtVaGetValues(XtParent(XTAS_DETPATHSELECTEDWIDGET), XmNforeground, &fg,NULL );
483 XtVaSetValues( XTAS_DETPATHSELECTEDWIDGET, XmNcursorPositionVisible, True, XmNborderColor, fg, NULL );
484 tas_current_signal = XmTextGetString( XTAS_DETPATHSELECTEDWIDGET );
485 xtas_current_detail = (XtasDetailPathSetStruct *)client_data ;
486 }
487
488 /*---------------------------------------------------------------------------*/
489 /* */
490 /* FUNCTION : XtasLosingDetailFocusCallback */
491 /* */
492 /* IN ARGS : .widget : The widget on which the event occurs. */
493 /* .signal : The signal name, NULL if not initialized. */
494 /* .call_data : Not significant. */
495 /* */
496 /* OUT ARGS : ( void ) */
497 /* */
498 /* OBJECT : The callback function for the focus in and out. */
499 /* */
500 /*---------------------------------------------------------------------------*/
501 void XtasLosingDetailFocusCallback( widget, signal, call_data )
502 Widget widget;
503 XtPointer signal;
504 XtPointer call_data;
505 {
506 XtVaSetValues( widget, XmNcursorPositionVisible, False ,NULL );
507 }
508
509 /*---------------------------------------------------------------------------*/
510 /* */
511 /* FUNCTION : XtasDetailDetailCallback */
512 /* */
513 /* IN ARGS : .widget : The widget on which the event occurs. */
514 /* .widtab : Table of important widgets for the current window. */
515 /* .call_data : Not significant. */
516 /* */
517 /* OUT ARGS : ( void ) */
518 /* */
519 /* OBJECT : The callback function for the View command */
520 /* */
521 /*---------------------------------------------------------------------------*/
522 void XtasDetailDetailCallback( widget, client_data, call_data )
523 Widget widget;
524 XtPointer client_data;
525 XtPointer call_data;
526 {
527 XtasWindowStruct *widtab = (XtasWindowStruct *)client_data ;
528
529 if( tas_current_signal != NULL )
530 {
531 XalSetCursor( widtab->topwidget, WAIT );
532 XalForceUpdate( widtab->topwidget );
533 XtasSignalsDetail( widtab->wrkwidget, tas_current_signal );
534 XalSetCursor( widtab->topwidget, NORMAL );
535 }
536 else
537 {
538 XalDrawMessage( widtab->errwidget, XTAS_NSIGERR );
539 }
540 }
541
542 /*---------------------------------------------------------------------------*/
543 /* */
544 /* FUNCTION : XtasCtkInfoCallback */
545 /* */
546 /* IN ARGS : .widget : The widget on which the event occurs. */
547 /* .widtab : Table of important widgets for the current window. */
548 /* .call_data : Not significant. */
549 /* */
550 /* OUT ARGS : ( void ) */
551 /* */
552 /* OBJECT : The callback function for the View command */
553 /* */
554 /*---------------------------------------------------------------------------*/
555 void XtasCtkInfoCallback( widget, client_data, call_data )
556 Widget widget;
557 XtPointer client_data;
558 XtPointer call_data;
559 {
560 chain_list *head;
561 ttvcritic_list *critic;
562 ttvsig_list *ptsig;
563 Widget info_user;
564 XtasWindowStruct *widtab = (XtasWindowStruct *)client_data ;
565
566 info_user = ((XtasDetailPathSetStruct *)((XtasWindowStruct *)client_data)->userdata)->INFO_USER;
567 if( tas_current_signal && xtas_current_detail )
568 {
569 if((XTAS_CTX_LOADED & XTAS_FROM_ANALYSIS) != XTAS_FROM_ANALYSIS)
570 XalDrawMessage( widtab->errwidget,
571 "Crosstalk analysis must have been run from XTas before");
572 else if(XtasMainParam->stbfig == NULL)
573 XalDrawMessage( widtab->errwidget,
574 "Crosstalk Informations display impossible :\nno stbfig in memory.");
575 else {
576 XalSetCursor( widtab->topwidget, WAIT );
577 XtasSetLabelString( info_user, "Looking for Crosstalk Informations ...");
578 XalForceUpdate( widtab->topwidget );
579 head = xtas_current_detail->CUR_DETAIL->DATA;
580 critic = head->DATA;
581 while(strcmp(critic->NAME,tas_current_signal))
582 critic = critic->NEXT;
583 ptsig = ttv_getsig (XtasMainParam->ttvfig, tas_current_signal);
584 if(ptsig) {
585 if(critic->SNODE == TTV_UP)
586 XtasDisplayCtkInfo( widtab->wrkwidget, &ptsig->NODE[1], widtab->errwidget);
587 else
588 XtasDisplayCtkInfo( widtab->wrkwidget, &ptsig->NODE[0], widtab->errwidget);
589 }
590 XalSetCursor( widtab->topwidget, NORMAL );
591 XtasSetLabelString( info_user, " ");
592 XalForceUpdate( widtab->topwidget );
593 }
594 }
595 else
596 {
597 XalDrawMessage( widtab->errwidget, XTAS_NSIGERR );
598 }
599 }
600 /*---------------------------------------------------------------------------*/
601 /* */
602 /* */
603 /* */
604 /* */
605 /*---------------------------------------------------------------------------*/
606 void XtasNextDetailCallback( widget, client_data , call_data )
607 Widget widget;
608 XtPointer client_data ;
609 XtPointer call_data;
610 {
611 XtasDetailPathSetStruct *detail_set = (XtasDetailPathSetStruct *)client_data ;
612
613 if(detail_set->CUR_DETAIL->NEXT != NULL)
614 {
615 detail_set->CUR_DETAIL = detail_set->CUR_DETAIL->NEXT ;
616 if (XTAS_DISPLAY_NEW)
617 XtasFillDelayList ( detail_set ) ;
618 else
619 XtasFillDetailPathList(detail_set) ;
620 XtasSetDetailInfo(detail_set,(ttvcritic_list *)((chain_list *)detail_set->CUR_DETAIL->DATA)->DATA) ;
621 }
622 }
623
624 /*---------------------------------------------------------------------------*/
625 /* */
626 /* */
627 /* */
628 /* */
629 /*---------------------------------------------------------------------------*/
630 void XtasPrevDetailCallback( widget, client_data , call_data )
631 Widget widget;
632 XtPointer client_data ;
633 XtPointer call_data;
634 {
635 XtasDetailPathSetStruct *detail_set = (XtasDetailPathSetStruct *)client_data ;
636
637 if(detail_set->CUR_DETAIL->PREV != NULL)
638 {
639 detail_set->CUR_DETAIL = detail_set->CUR_DETAIL->PREV ;
640 if (XTAS_DISPLAY_NEW)
641 XtasFillDelayList ( detail_set ) ;
642 else
643 XtasFillDetailPathList(detail_set) ;
644 XtasSetDetailInfo(detail_set,(ttvcritic_list *)((chain_list *)detail_set->CUR_DETAIL->DATA)->DATA) ;
645 }
646 }
647
648 /*---------------------------------------------------------------------------*/
649 /* */
650 /* FUNCTION : XtasGetSigNameCallback */
651 /* */
652 /* OBJECT : Get current signame if click on the scrolled list */
653 /* Display info at the bottom */
654 /* */
655 /*---------------------------------------------------------------------------*/
656
657 void XtasGetSigNameCallback(w, client_data, call_data)
658 Widget w;
659 XtPointer client_data;
660 XtPointer call_data;
661 {
662 XmListCallbackStruct *cbs ;
663 chain_list *head;
664 ttvcritic_list *critic;
665 XtasDetailPathSetStruct *current_detail = NULL ;
666 char buf[1024] ;
667 int i, size ;
668 Widget info_form ;
669 int n ;
670 Arg args[20] ;
671 static Widget last_info_widget ;
672 static XtasDetailPathSetStruct* last_detail ;
673
674 cbs = (XmListCallbackStruct*)call_data ;
675 current_detail = (XtasDetailPathSetStruct *)client_data ;
676 head = current_detail->CUR_DETAIL->DATA;
677 /* update "From" and "To" field in "getdelay" window */
678 xtas_current_detail = current_detail ;
679 XTAS_DISABLE_INFO = 'N' ; /* active le bouton info */
680
681 size = 0 ;
682 i = 1 ;
683
684 while((head != NULL) && (size++ < current_detail->CUR_DETAIL->SIZE))
685 {
686 critic = head->DATA;
687 while (critic && (cbs) && (i < cbs->item_position)) {
688 critic = critic->NEXT ;
689 i++ ;
690 }
691 if((i >= cbs->item_position) && critic){ /* if signal founded in list */
692 break ;
693 }
694 else
695 head = head->NEXT ;
696 }
697
698 if((tas_current_signal != NULL) && ( last_detail == current_detail )){
699 mbkfree( tas_current_signal) ;
700 tas_current_signal = NULL ;
701 }
702
703 sprintf(buf, "%s", critic->NAME) ;
704 tas_current_signal = strdup ( buf ) ;
705 if ( tas_current_signal && current_detail->INFO_PAGE )
706 {
707 if (( last_info_widget ) && ( last_detail == current_detail ))
708 XtDestroyWidget ( last_info_widget ) ;
709 n=0;
710 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
711 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
712 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
713 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
714 XtSetArg( args[n], XmNscrollingPolicy, XmSTATIC ); n++;
715 info_form = XtCreateManagedWidget( "XtasSubForm",
716 xmFormWidgetClass,
717 current_detail->INFO_PAGE,
718 args, n );
719 last_info_widget = info_form ;
720 XtasFillInfosForm( info_form, tas_current_signal ) ;
721 last_detail = current_detail ;
722 }
723 if ( head )
724 XtasSelectDelayCallback( w, (XtPointer)head, call_data ) ;
725 }
726
727 /*---------------------------------------------------------------------------*/
728 /* */
729 /* New display of the path details */
730 /* */
731 /*---------------------------------------------------------------------------*/
732 void XtasFillDetailPathList2(detail_set, label_widget)
733 XtasDetailPathSetStruct *detail_set;
734 Widget label_widget;
735 {
736 int size;
737 chain_list *head;
738 ttvcritic_list *critic;
739 long total = (long)0 ;
740 long totalnew = (long)0 ;
741
742 char text_line[2048] ;
743 char *tp, *tpnew, *cartotal, *cartotalnew, *capa, *slope, *slopenew ;
744 char type_rc_gate[1024] ;
745 char type_front[1024] ;
746 char signame[1024] ;
747 int i ;
748 XmString text ;
749 Widget list_widget, tmp ;
750 int n ;
751 Arg args[20] ;
752
753
754 n=0;
755 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
756 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
757 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
758 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
759 list_widget = XmCreateScrolledList ( detail_set->SCROLL_DETAIL, "XtasTextualDisplay", args, n );
760 XmListDeleteAllItems (list_widget) ;
761 XtManageChild( list_widget );
762 head = detail_set->CUR_DETAIL->DATA;
763 size = 0 ;
764
765 i = 1 ;
766
767 while((head != NULL) && (size++ < detail_set->CUR_DETAIL->SIZE))
768 {
769 critic = head->DATA;
770 while ( critic != NULL )
771 {
772 if ((detail_set->PARENT != NULL)&&(XTAS_SIMU_RES == 'Y')) {
773 totalnew += critic->SIMDELAY ;
774 total += critic->REFDELAY+critic->DATADELAY ;
775 }
776 else if ((detail_set->PARENT != NULL)&&((XTAS_CTX_LOADED & XTAS_LOADED)==XTAS_LOADED)) {
777 totalnew += critic->DELAY+critic->DATADELAY ;
778 total += critic->REFDELAY+critic->DATADELAY ;
779 }
780 else
781 total += critic->DELAY+critic->DATADELAY ;
782
783 /*- type : RC or GATE -*/
784 if(critic != head->DATA) {
785 if((critic->TYPE & TTV_FIND_RC) != TTV_FIND_RC)
786 sprintf(type_rc_gate,"GT");
787 else
788 sprintf(type_rc_gate,"RC");
789 }
790 else
791 sprintf(type_rc_gate," ");
792
793 /*- Capacite -*/
794 capa = XtasPlaceFloatString(critic->CAPA/1000.0) ; /* pF */
795
796 /*- Tp -*/
797 if ((detail_set->PARENT != NULL)&&(XTAS_SIMU_RES == 'Y')) {
798 tpnew = XtasPlaceNbStringTTVUnit(critic->SIMDELAY,TTV_UNIT) ;
799 tp = XtasPlaceNbStringTTVUnit(critic->REFDELAY+critic->DATADELAY,TTV_UNIT) ;
800 }
801 else if ((detail_set->PARENT != NULL)&&((XTAS_CTX_LOADED & XTAS_LOADED)==XTAS_LOADED)) {
802 tpnew = XtasPlaceNbStringTTVUnit(critic->DELAY+critic->DATADELAY,TTV_UNIT) ;
803 tp = XtasPlaceNbStringTTVUnit(critic->REFDELAY+critic->DATADELAY,TTV_UNIT) ;
804 }
805 else
806 tp = XtasPlaceNbStringTTVUnit(critic->DELAY+critic->DATADELAY,TTV_UNIT) ;
807
808 /*- Tp total -*/
809 if ((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED)==XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
810 cartotalnew = XtasPlaceNbStringTTVUnit(totalnew,TTV_UNIT) ;
811 cartotal = XtasPlaceNbStringTTVUnit(total,TTV_UNIT) ;
812 }
813 else
814 cartotal = XtasPlaceNbStringTTVUnit(total,TTV_UNIT) ;
815
816
817 /*- Slope -*/
818 if ((detail_set->PARENT != NULL)&&(XTAS_SIMU_RES == 'Y')) {
819 slopenew = XtasPlaceNbStringTTVUnit(critic->SIMSLOPE,TTV_UNIT) ;
820 slope = XtasPlaceNbStringTTVUnit(critic->REFSLOPE,TTV_UNIT) ;
821 }
822 else if ((detail_set->PARENT != NULL)&&((XTAS_CTX_LOADED & XTAS_LOADED)==XTAS_LOADED)) {
823 slopenew = XtasPlaceNbStringTTVUnit(critic->SLOPE,TTV_UNIT) ;
824 slope = XtasPlaceNbStringTTVUnit(critic->REFSLOPE,TTV_UNIT) ;
825 }
826 else
827 slope = XtasPlaceNbStringTTVUnit(critic->SLOPE,TTV_UNIT) ;
828
829 /*- Type de front -*/
830 if(critic->SNODE == TTV_UP)
831 sprintf(type_front,"R ") ;
832 else
833 sprintf(type_front,"F ") ;
834
835 /*- Type de front -*/
836 sprintf(signame,"%s",critic->NAME );
837
838 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED)==XTAS_LOADED ) || (XTAS_SIMU_RES == 'Y')))
839 sprintf(text_line,"%s %s pS %s pS %s pS %s pS %s pS %s pS %s pF %s %s",
840 type_rc_gate, tp, tpnew, cartotal, cartotalnew, slope, slopenew, capa, type_front, signame);
841 else
842 sprintf(text_line,"%s %s pS %s pS %s pS %s pF %s %s",
843 type_rc_gate, tp, cartotal, slope, capa, type_front, signame);
844 mbkfree(capa) ;
845 mbkfree(tp) ;
846 mbkfree(cartotal) ;
847 mbkfree(slope) ;
848
849 text = XmStringCreateSimple (text_line) ;
850 XmListAddItemUnselected ( list_widget, text, i) ;
851 XmStringFree (text) ;
852
853 i++ ;
854 critic = critic->NEXT;
855 }
856 head = head->NEXT ;
857 }
858
859 XtAddCallback (list_widget,
860 XmNbrowseSelectionCallback,
861 XtasGetSigNameCallback,
862 (XtPointer)detail_set);
863
864 XtAddCallback (list_widget,
865 XmNdefaultActionCallback,
866 XtasDetailDetailCallback,
867 (XtPointer)detail_set);
868
869 XtVaGetValues (list_widget, XmNhorizontalScrollBar, &tmp, NULL);
870 XtAddCallback (tmp, XmNvalueChangedCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
871 XtAddCallback (tmp, XmNdragCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
872 XtAddCallback (tmp, XmNincrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
873 XtAddCallback (tmp, XmNdecrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
874 XtAddCallback (tmp, XmNpageIncrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
875 XtAddCallback (tmp, XmNpageDecrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
876 XtAddCallback (tmp, XmNtoTopCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
877 XtAddCallback (tmp, XmNtoBottomCallback, XtasDetailColumnsTitleMoveWithHSBCallback, label_widget);
878 }
879
880 void XtasTestCallBack(widget, client_data, call_data)
881 Widget widget;
882 XtPointer client_data;
883 XtPointer call_data;
884 {
885
886 XalDrawMessage(XtasErrorWidget, "Attention");
887 }
888 /*---------------------------------------------------------------------------*/
889 /* */
890 /* */
891 /* */
892 /* */
893 /*---------------------------------------------------------------------------*/
894 void XtasFillDetailPathList(detail_set)
895 XtasDetailPathSetStruct *detail_set;
896 {
897 int n;
898 int size;
899 XmString text;
900 Arg args[20];
901 char *value;
902 Pixmap r_pixmap, f_pixmap, v_pixmap, gt_pixmap, rc_pixmap;
903 Widget row_widget;
904 Widget label_widget;
905 Widget tmp_widget;
906 chain_list *head;
907 ttvcritic_list *critic;
908 Pixel tas_state_color,tas_backg_color ;
909 long total = (long)0 ;
910 long totalnew = (long)0 ;
911
912
913 if (detail_set->ROW_DETAIL != NULL ) {
914 if(XTAS_SIMU_RES == 'N')
915 XtDestroyWidget( detail_set->ROW_DETAIL );
916 }
917
918 row_widget = XtVaCreateWidget( "XtasDetailRow",xmRowColumnWidgetClass, detail_set->SCROLL_DETAIL,
919 XmNorientation, XmVERTICAL,
920 XmNspacing, 2,
921 NULL);
922
923 detail_set->ROW_DETAIL = row_widget;
924 XtVaGetValues( row_widget, XmNforeground, &tas_state_color, XmNbackground, &tas_backg_color, NULL );
925 r_pixmap = XalGetPixmap( row_widget, XTAS_REDG_MAP, tas_state_color, tas_backg_color );
926 f_pixmap = XalGetPixmap( row_widget, XTAS_FEDG_MAP, tas_state_color, tas_backg_color );
927
928 rc_pixmap = XalGetPixmap( row_widget, XTAS_RCLN_MAP, tas_state_color, tas_backg_color );
929 gt_pixmap = XalGetPixmap( row_widget, XTAS_GATE_MAP, tas_state_color, tas_backg_color );
930
931 value = (char *) mbkalloc ( 15*sizeof( char ) );
932
933 head = detail_set->CUR_DETAIL->DATA;
934 size = 0 ;
935 while((head != NULL) && (size++ < detail_set->CUR_DETAIL->SIZE))
936 {
937 critic = head->DATA;
938 if ((detail_set->PARENT != NULL)&&((XTAS_CTX_LOADED & XTAS_LOADED)== XTAS_LOADED)) {
939 totalnew = critic->DELAY;
940 total = critic->REFDELAY;
941 }
942 else
943 total = critic->DELAY;
944 if (critic != NULL )
945 while ( critic->NEXT != NULL )
946 {
947 Widget sub_form;
948
949 if ((detail_set->PARENT != NULL)&&(XTAS_SIMU_RES == 'Y')) {
950 totalnew += critic->NEXT->SIMDELAY ;
951 total += critic->NEXT->REFDELAY+critic->DATADELAY ;
952 }
953 else if ((detail_set->PARENT != NULL)&&((XTAS_CTX_LOADED & XTAS_LOADED)== XTAS_LOADED)) {
954 totalnew += critic->NEXT->DELAY+critic->DATADELAY ;
955 total += critic->NEXT->REFDELAY+critic->DATADELAY ;
956 }
957
958 else
959 total += critic->NEXT->DELAY+critic->DATADELAY ;
960
961 n = 0;
962 sub_form = XtCreateManagedWidget( "XtasDeskMainForm", xmFormWidgetClass, row_widget, args, n );
963
964 n = 0;
965 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
966 XtSetArg( args[n], XmNwidth, 150 ); n++;
967 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
968 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
969 XtSetArg( args[n], XmNeditable, False ); n++;
970 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
971 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
972 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
973
974 XmTextSetString( tmp_widget, critic->NAME );
975
976 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusNameCallback, (XtPointer)detail_set );
977 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
978 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
979 //XmAddTabGroup( tmp_widget );
980
981 if ( (r_pixmap == XmUNSPECIFIED_PIXMAP) || (f_pixmap == XmUNSPECIFIED_PIXMAP) )
982 {
983 text = ( critic->SNODE == TTV_UP ) ? XmStringCreateSimple("rising") : XmStringCreateSimple("falling");
984 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, sub_form,
985 XmNtopAttachment, XmATTACH_FORM,
986 XmNtopOffset, 2,
987 XmNlabelString, text,
988 XmNleftAttachment, XmATTACH_WIDGET,
989 XmNleftWidget, tmp_widget,
990 XmNleftOffset, 7,
991 XmNwidth, 40,
992 XmNheight, 25,
993 NULL);
994 XmStringFree( text );
995 }
996 else
997
998 {
999 v_pixmap = ( critic->SNODE == TTV_UP ) ? r_pixmap : f_pixmap;
1000 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, sub_form,
1001 XmNtopAttachment, XmATTACH_FORM,
1002 XmNtopOffset, 2,
1003 XmNlabelType, XmPIXMAP,
1004 XmNlabelPixmap, v_pixmap,
1005 XmNleftAttachment, XmATTACH_WIDGET,
1006 XmNleftWidget, tmp_widget,
1007 XmNleftOffset, 7,
1008 XmNwidth, 40,
1009 XmNheight, 25,
1010 NULL);
1011 }
1012
1013
1014 if ( (rc_pixmap == XmUNSPECIFIED_PIXMAP) || (gt_pixmap == XmUNSPECIFIED_PIXMAP) )
1015 {
1016 if((critic->NEXT->TYPE & TTV_FIND_RC) != TTV_FIND_RC)
1017 XmStringCreateSimple("GT");
1018 else
1019 XmStringCreateSimple("RC");
1020 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, sub_form,
1021 XmNtopAttachment, XmATTACH_FORM,
1022 XmNtopOffset, 2,
1023 XmNlabelString, text,
1024 XmNleftAttachment, XmATTACH_WIDGET,
1025 XmNleftWidget, label_widget,
1026 XmNleftOffset, 7,
1027 XmNwidth, 40,
1028 XmNheight, 25,
1029 NULL);
1030 XmStringFree( text );
1031 }
1032 else
1033
1034 {
1035 if((critic->NEXT->TYPE & TTV_FIND_RC) != TTV_FIND_RC)
1036 v_pixmap = gt_pixmap ;
1037 else
1038 v_pixmap = rc_pixmap ;
1039 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, sub_form,
1040 // label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmDrawnButtonWidgetClass, sub_form,
1041 XmNtopAttachment, XmATTACH_FORM,
1042 // XmNpushButtonEnabled, True,
1043 XmNtopOffset, 2,
1044 XmNlabelType, XmPIXMAP,
1045 XmNlabelPixmap, v_pixmap,
1046 XmNleftAttachment, XmATTACH_WIDGET,
1047 XmNleftWidget, label_widget,
1048 XmNleftOffset, 7,
1049 XmNwidth, 40,
1050 XmNheight, 25,
1051 NULL);
1052 // XtAddCallback(label_widget, XmNactivateCallback, XtasTestCallBack, (XtPointer)NULL);
1053 }
1054
1055
1056 if ( (r_pixmap == XmUNSPECIFIED_PIXMAP) || (f_pixmap == XmUNSPECIFIED_PIXMAP) ||
1057 ( ( ( critic->NEXT->TYPE & TTV_FIND_HZ ) == TTV_FIND_HZ ) && ( critic->NEXT->NEXT == NULL ) ))
1058 {
1059 if ( ( ( critic->NEXT->TYPE & TTV_FIND_HZ ) == TTV_FIND_HZ )
1060 && ( critic->NEXT->NEXT == NULL ) )
1061 text = XmStringCreateSimple("highZ");
1062 else
1063 text = ( critic->NEXT->SNODE == TTV_UP ) ? XmStringCreateSimple("rising") : XmStringCreateSimple("falling");
1064
1065
1066 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, sub_form,
1067 XmNtopAttachment, XmATTACH_FORM,
1068 XmNtopOffset, 2,
1069 XmNlabelString, text,
1070 XmNleftAttachment, XmATTACH_WIDGET,
1071 XmNleftWidget, label_widget,
1072 XmNleftOffset, 9,
1073 XmNwidth, 40,
1074 XmNheight, 25,
1075 NULL);
1076 XmStringFree( text );
1077 }
1078 else
1079 {
1080
1081 v_pixmap = ( critic->NEXT->SNODE == TTV_UP ) ? r_pixmap : f_pixmap;
1082
1083
1084 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, sub_form,
1085 XmNtopAttachment, XmATTACH_FORM,
1086 XmNtopOffset, 2,
1087 XmNlabelType, XmPIXMAP,
1088 XmNlabelPixmap, v_pixmap,
1089 XmNleftAttachment, XmATTACH_WIDGET,
1090 XmNleftWidget, label_widget,
1091 XmNleftOffset, 9,
1092 XmNwidth, 40,
1093 XmNheight, 25,
1094 NULL);
1095 }
1096
1097 n = 0;
1098 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1099 XtSetArg( args[n], XmNleftWidget, label_widget ); n++;
1100 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1101 XtSetArg( args[n], XmNwidth, 150 ); n++;
1102 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1103 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1104 XtSetArg( args[n], XmNeditable, False ); n++;
1105 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1106 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1107 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1108 XmTextSetString( tmp_widget, critic->NEXT->NAME );
1109
1110 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusNameCallback, (XtPointer)detail_set );
1111 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1112 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1113 //XmAddTabGroup( tmp_widget );
1114
1115 n = 0;
1116 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1117 XtSetArg( args[n], XmNleftWidget, tmp_widget ); n++;
1118 XtSetArg( args[n], XmNleftOffset, 10 ); n++;
1119 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1120 XtSetArg( args[n], XmNwidth, 100 ); n++;
1121 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1122 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1123 XtSetArg( args[n], XmNeditable, False ); n++;
1124 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1125 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1126 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1127
1128 sprintf( value, "%g pF", critic->NEXT->CAPA/1000.0 );
1129 XmTextSetString( tmp_widget, value );
1130 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusCallback, (XtPointer)detail_set );
1131 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1132 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1133
1134 n = 0;
1135 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1136 XtSetArg( args[n], XmNleftWidget, tmp_widget ); n++;
1137 XtSetArg( args[n], XmNleftOffset, 10 ); n++;
1138 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1139 XtSetArg( args[n], XmNwidth, 100 ); n++;
1140 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1141 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1142 XtSetArg( args[n], XmNeditable, False ); n++;
1143 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1144 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1145 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1146
1147 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y')))
1148 sprintf( value, "%.1f pS", critic->NEXT->REFSLOPE/TTV_UNIT );
1149 else
1150 sprintf( value, "%.1f pS", critic->NEXT->SLOPE/TTV_UNIT );
1151
1152 XmTextSetString( tmp_widget, value );
1153 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusCallback, (XtPointer)detail_set );
1154 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1155 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1156
1157 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
1158 n = 0;
1159 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1160 XtSetArg( args[n], XmNleftWidget, tmp_widget ); n++;
1161 XtSetArg( args[n], XmNleftOffset, 2 ); n++;
1162 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1163 XtSetArg( args[n], XmNwidth, 100 ); n++;
1164 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1165 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1166 XtSetArg( args[n], XmNeditable, False ); n++;
1167 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1168 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1169 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1170
1171 if (XTAS_SIMU_RES == 'Y')
1172 sprintf( value, "%.1f pS", critic->NEXT->SIMSLOPE/TTV_UNIT );
1173 else
1174 sprintf( value, "%.1f pS", critic->NEXT->SLOPE/TTV_UNIT );
1175 XmTextSetString( tmp_widget, value );
1176 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusCallback, (XtPointer)detail_set );
1177 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1178 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1179 }
1180
1181 n = 0;
1182 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1183 XtSetArg( args[n], XmNleftWidget, tmp_widget ); n++;
1184 XtSetArg( args[n], XmNleftOffset, 10 ); n++;
1185 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1186 XtSetArg( args[n], XmNwidth, 100 ); n++;
1187 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1188 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1189 XtSetArg( args[n], XmNeditable, False ); n++;
1190 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1191 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1192 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1193
1194 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y')))
1195 sprintf( value, "%.1f pS", (critic->NEXT->REFDELAY+critic->DATADELAY)/TTV_UNIT );
1196 else
1197 sprintf( value, "%.1f pS", (critic->NEXT->DELAY+critic->DATADELAY)/TTV_UNIT );
1198
1199 XmTextSetString( tmp_widget, value );
1200 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusCallback, (XtPointer)detail_set );
1201 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1202 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1203
1204 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
1205 n = 0;
1206 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1207 XtSetArg( args[n], XmNleftWidget, tmp_widget ); n++;
1208 XtSetArg( args[n], XmNleftOffset, 2 ); n++;
1209 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1210 XtSetArg( args[n], XmNwidth, 100 ); n++;
1211 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1212 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1213 XtSetArg( args[n], XmNeditable, False ); n++;
1214 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1215 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1216 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1217
1218 if (XTAS_SIMU_RES == 'Y')
1219 sprintf( value, "%.1f pS", critic->NEXT->SIMDELAY/TTV_UNIT );
1220 else
1221 sprintf( value, "%.1f pS", (critic->NEXT->DELAY+critic->DATADELAY)/TTV_UNIT );
1222 XmTextSetString( tmp_widget, value );
1223 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusCallback, (XtPointer)detail_set );
1224 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1225 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1226 }
1227
1228 if(detail_set->PARENT != NULL)
1229 {
1230 n = 0;
1231 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1232 XtSetArg( args[n], XmNleftWidget, tmp_widget ); n++;
1233 XtSetArg( args[n], XmNleftOffset, 10 ); n++;
1234 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1235 XtSetArg( args[n], XmNwidth, 100 ); n++;
1236 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1237 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1238 XtSetArg( args[n], XmNeditable, False ); n++;
1239 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1240 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1241 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1242
1243 sprintf( value, "%.1f pS", total/TTV_UNIT);
1244
1245 XmTextSetString( tmp_widget, value );
1246 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusCallback, (XtPointer)detail_set );
1247 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1248 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1249
1250 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
1251 n = 0;
1252 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1253 XtSetArg( args[n], XmNleftWidget, tmp_widget ); n++;
1254 XtSetArg( args[n], XmNleftOffset, 2 ); n++;
1255 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1256 XtSetArg( args[n], XmNwidth, 100 ); n++;
1257 XtSetArg( args[n], XmNshadowThickness, 1 ); n++;
1258 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1259 XtSetArg( args[n], XmNeditable, False ); n++;
1260 XtSetArg( args[n], XmNborderWidth, 1 ); n++;
1261 XtSetArg( args[n], XmNborderColor, tas_backg_color ); n++;
1262 tmp_widget = XtCreateManagedWidget( "XtasUserField", xmTextWidgetClass, sub_form, args, n);
1263
1264 sprintf( value, "%.1f pS", totalnew/TTV_UNIT );
1265
1266 XmTextSetString( tmp_widget, value );
1267 XtAddCallback( tmp_widget, XmNfocusCallback, XtasDetailFocusCallback, (XtPointer)detail_set );
1268 XtAddCallback( tmp_widget, XmNfocusCallback, XtasSelectDelayCallback, (XtPointer)head );
1269 XtAddCallback( tmp_widget, XmNlosingFocusCallback, XtasLosingDetailFocusCallback, (XtPointer)0 );
1270 }
1271 }
1272 critic = critic->NEXT;
1273 }
1274 head = head->NEXT ;
1275 }
1276 XtManageChild( row_widget );
1277 mbkfree( value );
1278
1279 }
1280
1281
1282 /*---------------------------------------------------------------------------*/
1283 /* */
1284 /* FUNCTION : XtasCreateDetailMenus */
1285 /* */
1286 /* IN ARGS : .parent : Parent widget for the Menu Bar. */
1287 /* */
1288 /* OUT ARGS : .The value of the Menu Bar widget. */
1289 /* */
1290 /* OBJECT : Creates the menu bar of the detail window. */
1291 /* */
1292 /*---------------------------------------------------------------------------*/
1293 Widget XtasCreateDetailMenus( parent , tas_winfos )
1294 Widget parent;
1295 XtasWindowStruct *tas_winfos;
1296 {
1297 Widget menu_bar;
1298 Arg args[20];
1299 int n;
1300
1301 if (((XtasDetailPathSetStruct*)tas_winfos->userdata)->PARENT == NULL) { /*delay window */
1302 for(n = 0 ; XtasDetailMenuFile[n].label != NULL ; n++)
1303 XtasDetailMenuFile[n].callback_data = (XtPointer) tas_winfos;
1304 for(n = 0 ; XtasDetailMenuViewDelay[n].label != NULL ; n++)
1305 XtasDetailMenuViewDelay[n].callback_data = (XtPointer) tas_winfos;
1306 for(n = 0 ; XtasDetailMenuOptions[n].label != NULL ; n++)
1307 XtasDetailMenuOptions[n].callback_data = (XtPointer) tas_winfos;
1308 }
1309 else if (XTAS_SIMU_RES == 'Y'){
1310 for(n = 0 ; XtasDetailMenuFile[n].label != NULL ; n++)
1311 XtasDetailMenuFile[n].callback_data = (XtPointer) tas_winfos;
1312 for(n = 0 ; XtasDetailMenuViewSimu[n].label != NULL ; n++)
1313 XtasDetailMenuViewSimu[n].callback_data = (XtPointer) tas_winfos;
1314 for(n = 0 ; XtasDetailMenuOptions[n].label != NULL ; n++)
1315 XtasDetailMenuOptions[n].callback_data = (XtPointer) tas_winfos;
1316 }
1317 else {
1318 for(n = 0 ; XtasDetailMenuFile[n].label != NULL ; n++)
1319 XtasDetailMenuFile[n].callback_data = (XtPointer) tas_winfos;
1320 for(n = 0 ; XtasDetailMenuView[n].label != NULL ; n++)
1321 XtasDetailMenuView[n].callback_data = (XtPointer) tas_winfos;
1322 for(n = 0 ; XtasDetailMenuTools[n].label != NULL ; n++)
1323 XtasDetailMenuTools[n].callback_data = (XtPointer) tas_winfos;
1324 for(n = 0 ; XtasDetailMenuOptions[n].label != NULL ; n++)
1325 XtasDetailMenuOptions[n].callback_data = (XtPointer) tas_winfos;
1326 }
1327 /*-------------------*/
1328 /* Create a menu_bar */
1329 /*-------------------*/
1330 n = 0;
1331 menu_bar = XmCreateMenuBar( parent, "XtasMenuBar", args, n );
1332
1333 /*---------------------------------------------------------------------------*/
1334 /* This function is called from the "libXal" library. It provides a simple */
1335 /* way to build the menu bar with a set of functions and submenus. */
1336 /* To use this function, you have to make up a set of XalMenus structure */
1337 /* as described in the XalBuildMenus manual. */
1338 /*---------------------------------------------------------------------------*/
1339 if (((XtasDetailPathSetStruct*)tas_winfos->userdata)->PARENT == NULL)
1340 XalBuildMenus( menu_bar, /* The Menu Bar widget id */
1341 XtasDetailMenuDelay ); /* The main menu XalMenus structure */
1342 else if (XTAS_SIMU_RES == 'Y')
1343 XalBuildMenus( menu_bar, /* The Menu Bar widget id */
1344 XtasDetailMenuSimu ); /* The main menu XalMenus structure */
1345
1346 else if ((XTAS_CTX_LOADED & XTAS_LOADED) == 'Y')
1347 XalBuildMenus( menu_bar, /* The Menu Bar widget id */
1348 XtasDetailMenuCtk ); /* The main menu XalMenus structure */
1349 else
1350 XalBuildMenus( menu_bar, /* The Menu Bar widget id */
1351 XtasDetailMenu ); /* The main menu XalMenus structure */
1352
1353 return( menu_bar );
1354 }
1355
1356
1357 /*---------------------------------------------------------------------------*/
1358 /* */
1359 /* FUNCTION : XtasCreateDetailList */
1360 /* */
1361 /* IN ARGS : .parent : The parent widget id. */
1362 /* .path_detail : The path detail description. */
1363 /* */
1364 /* OUT ARGS : ( void ) */
1365 /* */
1366 /* OBJECT : Creation of the signals window objects. */
1367 /* */
1368 /*---------------------------------------------------------------------------*/
1369 Widget XtasCreateDetailList( parent, tas_winfos, detail_set, item_count )
1370 Widget parent;
1371 XtasWindowStruct *tas_winfos;
1372 XtasDetailPathSetStruct *detail_set;
1373 int item_count;
1374 {
1375 Widget label_widget, list_widget, paned_w, info_w;
1376 Widget form_widget, form, sub_form, dbase_form, pan_widget;
1377 Widget buttons_form, frame;
1378 Widget separator1, separator2;
1379 Widget button;
1380 Widget tmp;
1381 Widget THE_label_widget;
1382 XmString text;
1383 Arg args[20];
1384 int n;
1385 int c;
1386 char *value;
1387 ttvcritic_list *critic;
1388 chain_list *head;
1389 long delay = (long)0, newdelay = (long)0;
1390 Pixel tas_state_color,tas_backg_color ;
1391 Pixmap pixmap;
1392 int scrollheight_newdisp;
1393 XtasSearchPathParamStruct *params;
1394
1395
1396 form_widget = XtVaCreateWidget( "XtasMainPan",
1397 xmFormWidgetClass,
1398 parent,
1399 XmNtopAttachment, XmATTACH_FORM,
1400 XmNbottomAttachment, XmATTACH_POSITION,
1401 XmNbottomPosition, 99,
1402 XmNleftAttachment, XmATTACH_POSITION,
1403 XmNleftPosition, 1,
1404 XmNrightAttachment, XmATTACH_POSITION,
1405 XmNrightPosition, 99,
1406 NULL);
1407
1408 /*------------------------------------------------*/
1409 /* Create a form to manage the first row children */
1410 /*------------------------------------------------*/
1411 n = 0;
1412 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1413 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1414 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1415 buttons_form = XtCreateManagedWidget( "XtasMainButtons", xmFormWidgetClass, form_widget, args, n );
1416
1417 if (((XtasDetailPathSetStruct*)tas_winfos->userdata)->PARENT == NULL)
1418 for ( n=0; XtasDetailButtonMenusDelay[n].pix_file != -1 ; n++ )
1419 XtasDetailButtonMenusDelay[n].callback_data = (XtPointer) tas_winfos;
1420 else if (XTAS_SIMU_RES == 'Y')
1421 for ( n=0; XtasDetailButtonMenusSimu[n].pix_file != -1 ; n++ )
1422 XtasDetailButtonMenusSimu[n].callback_data = (XtPointer) tas_winfos;
1423 else
1424 for ( n=0; XtasDetailButtonMenus[n].pix_file != -1 ; n++ )
1425 XtasDetailButtonMenus[n].callback_data = (XtPointer) tas_winfos;
1426
1427
1428
1429 n = 0;
1430 XtSetArg( args[n], XmNnumColumns, 1 ); n++;
1431 XtSetArg( args[n], XmNorientation, XmHORIZONTAL ); n++;
1432
1433 if (((XtasDetailPathSetStruct*)tas_winfos->userdata)->PARENT == NULL)
1434 tas_winfos->butwidget = XalButtonMenus( buttons_form, XtasDetailButtonMenusDelay, args, n, 40, 40 );
1435 else if (XTAS_SIMU_RES == 'Y')
1436 tas_winfos->butwidget = XalButtonMenus( buttons_form, XtasDetailButtonMenusSimu, args, n, 40, 40 );
1437 else
1438 tas_winfos->butwidget = XalButtonMenus( buttons_form, XtasDetailButtonMenus, args, n, 40, 40 );
1439 XtasAddDummyButton( tas_winfos->butwidget );
1440 XtManageChild( tas_winfos->butwidget );
1441 //XmAddTabGroup( tas_winfos->butwidget );
1442
1443 /*---------------------------------------------------------------------------*/
1444 /* creation d'un separateur */
1445 /*---------------------------------------------------------------------------*/
1446 n = 0;
1447 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1448 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1449 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1450 XtSetArg( args[n], XmNtopWidget, buttons_form ); n++;
1451 separator1 = XtCreateManagedWidget( "XtasSeparator", xmSeparatorWidgetClass, form_widget, args, n );
1452
1453
1454 /*---------------------------------------------------------------------------*/
1455 /* Create the message area */
1456 /*---------------------------------------------------------------------------*/
1457 n = 0;
1458 XtSetArg( args[n], XmNborderWidth, 0 ); n++;
1459 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1460 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1461 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1462 XtSetArg( args[n], XmNbottomOffset, 2 ); n++;
1463 XtSetArg( args[n], XmNleftOffset, 2 ); n++;
1464 XtSetArg( args[n], XmNrightOffset, 2 ); n++;
1465 form = XtCreateManagedWidget( "XtasShellSubForm", xmFormWidgetClass, form_widget, args, n );
1466
1467 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, form,
1468 XmNtopAttachment, XmATTACH_FORM,
1469 XmNleftAttachment, XmATTACH_FORM,
1470 XmNleftOffset, 2,
1471 NULL);
1472 XtasSetLabelString( label_widget, "Informations Area" );
1473
1474 n = 0;
1475 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1476 XtSetArg( args[n], XmNtopWidget, label_widget ); n++;
1477 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1478 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1479 XtSetArg( args[n], XmNrightAttachment, XmATTACH_POSITION ); n++;
1480 XtSetArg( args[n], XmNrightPosition, 48 ); n++;
1481 frame = XtCreateManagedWidget( "XtasFrame", xmFrameWidgetClass, form, args, n );
1482 n = 0;
1483 XtSetArg( args[n], XmNheight, 20 ); n++;
1484 label_widget = XtCreateManagedWidget( "XtasUserInfo", xmLabelWidgetClass, frame, args, n);
1485 XtasSetLabelString( label_widget, XTAS_NULINFO );
1486 detail_set->INFO_USER = label_widget;
1487
1488 n = 0;
1489 XtSetArg( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1490 XtSetArg( args[n], XmNtopWidget, frame ); n++;
1491 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1492 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1493 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1494 XtSetArg( args[n], XmNleftWidget, frame ); n++;
1495 frame = XtCreateManagedWidget( "XtasFrame", xmFrameWidgetClass, form, args, n );
1496 n = 0;
1497 XtSetArg( args[n], XmNheight, 20 ); n++;
1498 label_widget = XtCreateManagedWidget( "XtashelpInfo", xmLabelWidgetClass, frame, args, n);
1499 XtasSetLabelString( label_widget, XTAS_NULINFO );
1500 detail_set->INFO_HELP = label_widget;
1501
1502 /*---------------------------------------------------------------------------*/
1503 /* creation d'un separateur */
1504 /*---------------------------------------------------------------------------*/
1505 n = 0;
1506 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1507 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1508 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_WIDGET ); n++;
1509 XtSetArg( args[n], XmNbottomWidget, form ); n++;
1510 separator2 = XtCreateManagedWidget( "XtasSeparator", xmSeparatorWidgetClass, form_widget, args, n );
1511
1512 /*------------------------------------------------------------------------------------------------*/
1513 /* Creation de la paned window */
1514 /*------------------------------------------------------------------------------------------------*/
1515 n = 0;
1516 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1517 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1518 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1519 XtSetArg( args[n], XmNtopWidget, separator1 ); n++;
1520 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_WIDGET ); n++;
1521 XtSetArg( args[n], XmNbottomWidget, separator2 ); n++;
1522 form = XtCreateManagedWidget( "XtasShellSubForm", xmFormWidgetClass, form_widget , args, n );
1523 n = 0;
1524 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1525 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1526 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1527 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1528 pan_widget = XtCreateManagedWidget( "XtasShellSubForm", xmPanedWindowWidgetClass, form , args, n );
1529
1530 /*---------------------------------------------------------------------------------------------*/
1531 /* affichage d'informations generales sur le chemin detaille en cours */
1532 /*---------------------------------------------------------------------------------------------*/
1533
1534 head = (chain_list *) detail_set->CUR_DETAIL->DATA;
1535 critic = (ttvcritic_list *) head->DATA;
1536
1537
1538 n = 0;
1539 form = XtCreateManagedWidget( "XtasShellSubForm", xmFormWidgetClass, pan_widget, args, n );
1540
1541 value = (char *) mbkalloc (1024*sizeof(char));
1542
1543 n = 0;
1544 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1545 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1546 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1547 frame = XtCreateManagedWidget( "XtasFrame", xmFrameWidgetClass, form, args, n );
1548 n = 0;
1549 sub_form = XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass, frame, args, n);
1550
1551 text = XmStringCreateSimple ("From: ");
1552 n = 0;
1553 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1554 XtSetArg( args[n], XmNtopOffset, 6 ); n++;
1555 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1556 XtSetArg( args[n], XmNlabelString, text ); n++;
1557 XtSetArg( args[n], XmNwidth, 40 ); n++;
1558 label_widget = XtCreateManagedWidget( "XtasLabel", xmLabelWidgetClass, sub_form, args, n );
1559 XmStringFree (text);
1560
1561 XtVaGetValues( label_widget, XmNforeground, &tas_state_color, XmNbackground, &tas_backg_color, NULL );
1562
1563 if (critic!=NULL)
1564 {
1565 if ( critic->SNODE == TTV_UP )
1566 text = XmStringCreateSimple ("(Rise)");
1567 else
1568 text = XmStringCreateSimple ("(Fall)");
1569 }
1570 n = 0;
1571 XtSetArg( args[n], XmNwidth, 40 ); n++;
1572 XtSetArg( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1573 XtSetArg( args[n], XmNtopWidget, label_widget ); n++;
1574 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1575 XtSetArg( args[n], XmNbottomWidget, label_widget ); n++;
1576 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1577 XtSetArg( args[n], XmNleftWidget, label_widget ); n++;
1578 XtSetArg( args[n], XmNlabelString, text ); n++;
1579 label_widget = XtCreateManagedWidget( "XtasLabel", xmLabelWidgetClass, sub_form, args, n );
1580 detail_set->NODE_RF = label_widget;
1581 XmStringFree (text);
1582 n = 0;
1583 XtSetArg( args[n], XmNwidth, 800 ); n++;
1584 XtSetArg( args[n], XmNeditable, False ); n++;
1585 XtSetArg( args[n], XmNeditMode, XmMULTI_LINE_EDIT ); n++;
1586 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1587 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1588 XtSetArg( args[n], XmNleftWidget, label_widget ); n++;
1589 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1590 XtSetArg( args[n], XmNrightOffset, 5 ); n++;
1591 XtSetArg( args[n], XmNresizeHeight, True ); n++;
1592 XtSetArg( args[n], XmNresizeWidth, True ); n++;
1593 XtSetArg( args[n], XmNwordWrap, True ); n++;
1594 XtSetArg( args[n], XmNvalue, critic->NAME ); n++;
1595 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1596 XtSetArg( args[n], XmNbackground, tas_backg_color ); n++;
1597 XtSetArg( args[n], XmNtopShadowColor, tas_backg_color ); n++;
1598 XtSetArg( args[n], XmNtopShadowPixmap, XmUNSPECIFIED_PIXMAP ); n++;
1599 XtSetArg( args[n], XmNbottomShadowColor,tas_backg_color ); n++;
1600 XtSetArg( args[n], XmNbottomShadowPixmap,XmUNSPECIFIED_PIXMAP ); n++;
1601 label_widget = XtCreateManagedWidget( "XtasLabel", xmTextWidgetClass, sub_form, args, n );
1602 detail_set->NODE_NAME = label_widget;
1603
1604
1605 if (critic!=NULL)
1606 {
1607 if (XTAS_SIMU_RES != 'Y')
1608 delay = critic->DELAY+critic->DATADELAY;
1609 while( critic->NEXT != NULL )
1610 {
1611 delay += critic->NEXT->DELAY+critic->DATADELAY;
1612 if (XTAS_SIMU_RES == 'Y')
1613 newdelay += critic->NEXT->SIMDELAY;
1614 else
1615 newdelay += critic->NEXT->DELAY+critic->DATADELAY;
1616 critic = critic->NEXT;
1617 }
1618 }
1619
1620 n = 0;
1621 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1622 XtSetArg( args[n], XmNtopWidget, frame ); n++;
1623 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1624 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1625 frame = XtCreateManagedWidget( "XtasLabel", xmFrameWidgetClass, form, args, n );
1626 n = 0;
1627 sub_form = XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass, frame, args, n);
1628
1629 text = XmStringCreateSimple ("To: ");
1630 n = 0;
1631 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1632 XtSetArg( args[n], XmNtopOffset, 6 ); n++;
1633 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1634 XtSetArg( args[n], XmNlabelString, text ); n++;
1635 XtSetArg( args[n], XmNwidth, 40 ); n++;
1636 label_widget = XtCreateManagedWidget( "XtasLabel", xmLabelWidgetClass, sub_form, args, n );
1637 XmStringFree (text);
1638
1639 if (critic!=NULL)
1640 {
1641 if ( critic->SNODE == TTV_UP )
1642 text = XmStringCreateSimple ("(Rise)");
1643 else
1644 text = XmStringCreateSimple ("(Fall)");
1645 }
1646 n = 0;
1647 XtSetArg( args[n], XmNwidth, 40 ); n++;
1648 XtSetArg( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1649 XtSetArg( args[n], XmNtopWidget, label_widget ); n++;
1650 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1651 XtSetArg( args[n], XmNleftWidget, label_widget ); n++;
1652 XtSetArg( args[n], XmNlabelString, text ); n++;
1653 label_widget = XtCreateManagedWidget( "XtasLabel", xmLabelWidgetClass, sub_form, args, n );
1654 detail_set->ROOT_RF = label_widget;
1655 XmStringFree (text);
1656 n = 0;
1657 XtSetArg( args[n], XmNwidth, 800 ); n++;
1658 XtSetArg( args[n], XmNeditable, False ); n++;
1659 XtSetArg( args[n], XmNeditMode, XmMULTI_LINE_EDIT ); n++;
1660 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1661 XtSetArg( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1662 XtSetArg( args[n], XmNleftWidget, label_widget ); n++;
1663 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1664 XtSetArg( args[n], XmNrightOffset, 5 ); n++;
1665 XtSetArg( args[n], XmNresizeHeight, True ); n++;
1666 XtSetArg( args[n], XmNresizeWidth, True ); n++;
1667 XtSetArg( args[n], XmNwordWrap, True ); n++;
1668 XtSetArg( args[n], XmNvalue, critic->NAME ); n++;
1669 XtSetArg( args[n], XmNcursorPositionVisible, False ); n++;
1670 XtSetArg( args[n], XmNbackground, tas_backg_color ); n++;
1671 XtSetArg( args[n], XmNtopShadowColor, tas_backg_color ); n++;
1672 XtSetArg( args[n], XmNtopShadowPixmap, XmUNSPECIFIED_PIXMAP ); n++;
1673 XtSetArg( args[n], XmNbottomShadowColor,tas_backg_color ); n++;
1674 XtSetArg( args[n], XmNbottomShadowPixmap,XmUNSPECIFIED_PIXMAP ); n++;
1675 label_widget = XtCreateManagedWidget( "XtasLabel", xmTextWidgetClass, sub_form, args, n );
1676 detail_set->ROOT_NAME = label_widget;
1677
1678 n = 0;
1679 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1680 XtSetArg( args[n], XmNtopWidget, frame ); n++;
1681 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1682 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1683 frame = XtCreateManagedWidget( "XtasLabel", xmFrameWidgetClass, form, args, n );
1684 n = 0;
1685 sub_form = XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass, frame, args, n);
1686 n = 0;
1687 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1688 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1689 label_widget = XtCreateManagedWidget( "XtasLabel", xmLabelWidgetClass, sub_form, args, n );
1690 detail_set->TOTAL_DELAY = label_widget;
1691 if ((XTAS_SIMU_RES == 'Y') || ((XTAS_CTX_LOADED & XTAS_LOADED)==XTAS_LOADED))
1692 sprintf( value, "Total Delay: %.1f pS", newdelay/TTV_UNIT );
1693 else
1694 sprintf( value, "Total Delay: %.1f pS", delay/TTV_UNIT );
1695 XtasSetLabelString( label_widget, value );
1696
1697 n = 0;
1698 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1699 XtSetArg( args[n], XmNtopWidget, frame ); n++;
1700 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1701 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1702 frame = XtCreateManagedWidget( "XtasLabel", xmFrameWidgetClass, form, args, n );
1703 n = 0;
1704 sub_form = XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass, frame, args, n);
1705 critic = (ttvcritic_list *)head->DATA;
1706 n = 0;
1707 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1708 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1709 label_widget = XtCreateManagedWidget( "XtasLabel", xmLabelWidgetClass, sub_form, args, n );
1710 sprintf( value, "Starting Time: %.1f pS", (critic->DELAY+critic->DATADELAY)/TTV_UNIT );
1711 XtasSetLabelString( label_widget, value );
1712
1713 mbkfree( value );
1714
1715
1716 n = 0;
1717 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1718 XtSetArg( args[n], XmNtopWidget, frame ); n++;
1719 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1720 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1721 frame = XtCreateManagedWidget( "XtasFrame", xmFrameWidgetClass, form, args, n);
1722 n = 0;
1723 dbase_form = XtCreateManagedWidget( "XtasTitleForm", xmFormWidgetClass, frame, args, n);
1724
1725 /*--------------------- recherche de plusieurs details de chemins ----------------------*/
1726 if ( head->NEXT != NULL )
1727 {
1728 n = 0;
1729 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1730 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1731 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1732 button = XtCreateManagedWidget( "XtasButton", xmPushButtonWidgetClass, dbase_form, args, n);
1733 XtasSetLabelString( button, "Next");
1734 XtAddCallback( button, XmNactivateCallback, XtasNextDetailCallback,
1735 (XtPointer)detail_set );
1736
1737 n = 0;
1738 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1739 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1740 XtSetArg( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1741 XtSetArg( args[n], XmNrightWidget, button ); n++;
1742 button = XtCreateManagedWidget( "XtasButton", xmPushButtonWidgetClass, dbase_form, args, n);
1743 XtasSetLabelString( button, "Prev");
1744 XtAddCallback( button, XmNactivateCallback, XtasPrevDetailCallback,
1745 (XtPointer)detail_set );
1746 }
1747
1748 n = 0;
1749 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1750 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1751 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1752 label_widget = XtCreateManagedWidget( "XtasLabel", xmLabelWidgetClass, dbase_form, args, n);
1753 if(detail_set->PARENT == NULL)
1754 XtasSetLabelString( label_widget, "Delay List");
1755 else {
1756 params = detail_set->PARENT->PARAM;
1757 if (params->CRITIC == 'P') {
1758 if ((params->SCAN_TYPE & TTV_FIND_MAX) == TTV_FIND_MAX){
1759 if (XTAS_SIMU_RES == 'Y')
1760 XtasSetLabelString( label_widget, "Simulated Parallel Max Path Detail List");
1761 else
1762 XtasSetLabelString( label_widget, "Parallel Max Path Detail List");
1763 }
1764 else {
1765 if (XTAS_SIMU_RES == 'Y')
1766 XtasSetLabelString( label_widget, "Simulated Parallel Min Path Detail List");
1767 else
1768 XtasSetLabelString( label_widget, "Parallel Min Path Detail List");
1769 }
1770 }
1771 else if ((params->REQUEST_TYPE & XTAS_PATHS) == XTAS_PATHS) {
1772 if ((params->REQUEST_TYPE & XTAS_CRITIC) == XTAS_CRITIC) {
1773 if ((params->SCAN_TYPE & TTV_FIND_MAX) == TTV_FIND_MAX) {
1774 if (XTAS_SIMU_RES == 'Y')
1775 XtasSetLabelString( label_widget, "Simulated Critic Max Path Detail List");
1776 else
1777 XtasSetLabelString( label_widget, "Critic Max Path Detail List");
1778 }
1779 else {
1780 if (XTAS_SIMU_RES == 'Y')
1781 XtasSetLabelString( label_widget, "Simulated Critic Min Path Detail List");
1782 else
1783 XtasSetLabelString( label_widget, "Critic Min Path Detail List");
1784 }
1785 }
1786 else {
1787 if ((params->SCAN_TYPE & TTV_FIND_MAX) == TTV_FIND_MAX) {
1788 if (XTAS_SIMU_RES == 'Y')
1789 XtasSetLabelString( label_widget, "Simulated Max Path Detail List");
1790 else
1791 XtasSetLabelString( label_widget, "Max Path Detail List");
1792 }
1793 else {
1794 if (XTAS_SIMU_RES == 'Y')
1795 XtasSetLabelString( label_widget, "Simulated Min Path Detail List");
1796 else
1797 XtasSetLabelString( label_widget, "Min Path Detail List");
1798 }
1799 }
1800 }
1801 else {
1802 if ((params->REQUEST_TYPE & XTAS_CRITIC) == XTAS_CRITIC) {
1803 if ((params->SCAN_TYPE & TTV_FIND_MAX) == TTV_FIND_MAX) {
1804 if (XTAS_SIMU_RES == 'Y')
1805 XtasSetLabelString( label_widget, "Simulated Critic Max Access Detail List");
1806 else
1807 XtasSetLabelString( label_widget, "Critic Max Access Detail List");
1808 }
1809 else {
1810 if (XTAS_SIMU_RES == 'Y')
1811 XtasSetLabelString( label_widget, "Simulated Critic Min Access Detail List");
1812 else
1813 XtasSetLabelString( label_widget, "Critic Min Access Detail List");
1814 }
1815 }
1816 else {
1817 if ((params->SCAN_TYPE & TTV_FIND_MAX) == TTV_FIND_MAX) {
1818 if (XTAS_SIMU_RES == 'Y')
1819 XtasSetLabelString( label_widget, "Simulated Max Access Detail List");
1820 else
1821 XtasSetLabelString( label_widget, "Max Access Detail List");
1822 }
1823 else {
1824 if (XTAS_SIMU_RES == 'Y')
1825 XtasSetLabelString( label_widget, "Simulated Min Access Detail List");
1826 else
1827 XtasSetLabelString( label_widget, "Min Access Detail List");
1828 }
1829 }
1830 }
1831 }
1832
1833 if(XTAS_DISPLAY_NEW)
1834 {
1835 n = 0;
1836 XtSetArg( args[n], XmNborderWidth, 0 ); n++;
1837 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1838 XtSetArg( args[n], XmNtopWidget, frame ); n++;
1839 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1840 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1841 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1842 dbase_form = XtCreateManagedWidget( "XtasTitleForm", xmFormWidgetClass, form, args, n );
1843 if(detail_set->PARENT != NULL)
1844 {
1845 if(XTAS_SIMU_RES == 'Y')
1846 text = XmStringCreateSimple( "TAS Tp" );
1847 else
1848 text = XmStringCreateSimple( "Tp" );
1849
1850 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1851 XmNlabelString, text,
1852 XmNtopAttachment, XmATTACH_FORM,
1853 XmNleftAttachment, XmATTACH_FORM,
1854 XmNalignment, XmALIGNMENT_END,
1855 XmNwidth, 100,
1856 XmNtopOffset, 2,
1857 XmNrightOffset, 2,
1858 XmNleftOffset, XTAS_DETAIL_TP_LOFFSET_T,
1859 XmNheight, 25,
1860 NULL);
1861 XmStringFree( text );
1862 THE_label_widget = label_widget;
1863
1864 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
1865 if(XTAS_SIMU_RES == 'Y')
1866 text = XmStringCreateSimple( "SPICE Tp" );
1867 else
1868 text = XmStringCreateSimple( "Tp CTK" );
1869
1870 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1871 XmNlabelString, text,
1872 XmNtopAttachment, XmATTACH_FORM,
1873 XmNleftAttachment, XmATTACH_WIDGET,
1874 XmNleftWidget, label_widget,
1875 XmNalignment, XmALIGNMENT_END,
1876 XmNwidth, 77,
1877 XmNtopOffset, 2,
1878 XmNrightOffset, 2,
1879 XmNleftOffset, 6,
1880 XmNheight, 25,
1881 NULL);
1882 XmStringFree( text );
1883 }
1884
1885 if(XTAS_SIMU_RES == 'Y')
1886 text = XmStringCreateSimple( "TAS Total" );
1887 else
1888 text = XmStringCreateSimple( "Total" );
1889 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1890 XmNlabelString, text,
1891 XmNtopAttachment, XmATTACH_FORM,
1892 XmNleftAttachment, XmATTACH_WIDGET,
1893 XmNleftWidget, label_widget,
1894 XmNalignment, XmALIGNMENT_END,
1895 XmNwidth, 77,
1896 XmNtopOffset, 2,
1897 XmNrightOffset, 2,
1898 XmNleftOffset, 6,
1899 XmNheight, 25,
1900 NULL);
1901 XmStringFree( text );
1902 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
1903 if (XTAS_SIMU_RES == 'Y')
1904 text = XmStringCreateSimple( "SPICE Total" );
1905 else
1906 text = XmStringCreateSimple( "Total CTK" );
1907 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1908 XmNlabelString, text,
1909 XmNtopAttachment, XmATTACH_FORM,
1910 XmNleftAttachment, XmATTACH_WIDGET,
1911 XmNleftWidget, label_widget,
1912 XmNalignment, XmALIGNMENT_END,
1913 XmNwidth, 77,
1914 XmNtopOffset, 2,
1915 XmNrightOffset, 2,
1916 XmNleftOffset, 6,
1917 XmNheight, 25,
1918 NULL);
1919 XmStringFree( text );
1920 }
1921
1922 if(XTAS_SIMU_RES == 'Y')
1923 text = XmStringCreateSimple( "TAS Slope" );
1924 else
1925 text = XmStringCreateSimple( "Slope" );
1926 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1927 XmNlabelString, text,
1928 XmNtopAttachment, XmATTACH_FORM,
1929 XmNleftAttachment, XmATTACH_WIDGET,
1930 XmNleftWidget, label_widget,
1931 XmNalignment, XmALIGNMENT_END,
1932 XmNwidth, 83,
1933 XmNtopOffset, 2,
1934 XmNrightOffset, 2,
1935 XmNleftOffset, 2,
1936 XmNheight, 25,
1937 NULL);
1938 XmStringFree( text );
1939 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
1940 if (XTAS_SIMU_RES == 'Y')
1941 text = XmStringCreateSimple( "SPICE Slope" );
1942 else
1943 text = XmStringCreateSimple( "Slope CTK" );
1944 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1945 XmNlabelString, text,
1946 XmNtopAttachment, XmATTACH_FORM,
1947 XmNleftAttachment, XmATTACH_WIDGET,
1948 XmNleftWidget, label_widget,
1949 XmNalignment, XmALIGNMENT_END,
1950 XmNwidth, 81,
1951 XmNtopOffset, 2,
1952 XmNrightOffset, 2,
1953 XmNleftOffset, 2,
1954 XmNheight, 25,
1955 NULL);
1956 XmStringFree( text );
1957 }
1958 text = XmStringCreateSimple( "Capa" );
1959 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1960 XmNlabelString, text,
1961 XmNtopAttachment, XmATTACH_FORM,
1962 XmNleftAttachment, XmATTACH_WIDGET,
1963 XmNleftWidget, label_widget,
1964 XmNalignment, XmALIGNMENT_END,
1965 XmNwidth, 80,
1966 XmNtopOffset, 2,
1967 XmNrightOffset, 2,
1968 XmNleftOffset, 2,
1969 XmNheight, 25,
1970 NULL);
1971 XmStringFree( text );
1972
1973 text = XmStringCreateSimple( "Signal" );
1974 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
1975 XmNlabelString, text,
1976 XmNtopAttachment, XmATTACH_FORM,
1977 XmNleftAttachment, XmATTACH_WIDGET,
1978 XmNleftWidget, label_widget,
1979 XmNalignment, XmALIGNMENT_END,
1980 XmNwidth, 100,
1981 XmNtopOffset, 2,
1982 XmNrightOffset, 2,
1983 XmNleftOffset, 40,
1984 XmNheight, 25,
1985 NULL);
1986 XmStringFree( text );
1987 scrollheight_newdisp = 300 ;
1988 }
1989 else
1990 {
1991 scrollheight_newdisp = 200 ; /* if detailpath is call by getdelay */
1992 }
1993 n=0;
1994 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1995 XtSetArg( args[n], XmNtopWidget, label_widget ); n++;
1996 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1997 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1998 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1999 XtSetArg( args[n], XmNheight, 300 ); n++;
2000 paned_w = XtCreateManagedWidget( "XtasPanedWidget",
2001 xmPanedWindowWidgetClass,
2002 dbase_form,
2003 args, n );
2004 /* list_widget will contain the scroll list of detail path */
2005 list_widget = XtVaCreateManagedWidget ( "XtasSubForm",
2006 xmFormWidgetClass,
2007 paned_w,
2008 XmNheight, scrollheight_newdisp,
2009 NULL) ;
2010 detail_set->SCROLL_DETAIL = list_widget;
2011
2012 /* list_widget will display info path */
2013 info_w = XtVaCreateManagedWidget ( "XtasSubForm",
2014 xmFormWidgetClass,
2015 paned_w,
2016 XmNtopAttachment, XmATTACH_WIDGET,
2017 XmNtopWidget , list_widget,
2018 NULL) ;
2019 detail_set->INFO_PAGE = info_w ;
2020
2021 if (detail_set->PARENT == NULL)
2022 XtasFillDelayList ( detail_set ) ;
2023 else
2024 XtasFillDetailPathList2( detail_set, THE_label_widget );
2025 }
2026 else /* old display format */
2027 {
2028 n = 0;
2029 XtSetArg( args[n], XmNborderWidth, 0 ); n++;
2030 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
2031 XtSetArg( args[n], XmNtopWidget, frame ); n++;
2032 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
2033 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
2034 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
2035 dbase_form = XtCreateManagedWidget( "XtasTitleForm", xmFormWidgetClass, form, args, n );
2036
2037 text = XmStringCreateSimple( "From" );
2038
2039 THE_label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2040 XmNlabelString, text,
2041 XmNtopAttachment, XmATTACH_FORM,
2042 XmNleftAttachment, XmATTACH_FORM,
2043 XmNwidth, 150,
2044 XmNtopOffset, 2,
2045 XmNleftOffset, XTAS_DETAIL_FROM_LOFFSET_G,
2046 XmNheight, 25,
2047 NULL);
2048 XmStringFree( text );
2049 text = XmStringCreateSimple( "Type" );
2050 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2051 XmNlabelString, text,
2052 XmNtopAttachment, XmATTACH_FORM,
2053 XmNleftAttachment, XmATTACH_WIDGET,
2054 XmNleftWidget, THE_label_widget,
2055 XmNwidth, 136,
2056 XmNtopOffset, 2,
2057 XmNleftOffset, 7,
2058 XmNheight, 25,
2059 NULL);
2060 XmStringFree( text );
2061 text = XmStringCreateSimple( "To" );
2062 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2063 XmNlabelString, text,
2064 XmNtopAttachment, XmATTACH_FORM,
2065 XmNleftAttachment, XmATTACH_WIDGET,
2066 XmNleftWidget, label_widget,
2067 XmNwidth, 150,
2068 XmNtopOffset, 2,
2069 XmNleftOffset, 2,
2070 XmNheight, 25,
2071 NULL);
2072 XmStringFree( text );
2073
2074 text = XmStringCreateSimple( "Capa" );
2075 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2076 XmNlabelString, text,
2077 XmNtopAttachment, XmATTACH_FORM,
2078 XmNleftAttachment, XmATTACH_WIDGET,
2079 XmNleftWidget, label_widget,
2080 XmNwidth, 100,
2081 XmNtopOffset, 2,
2082 XmNleftOffset, 12,
2083 XmNheight, 25,
2084 NULL);
2085 XmStringFree( text );
2086
2087 if((detail_set->PARENT != NULL)&&(XTAS_SIMU_RES == 'Y'))
2088 text = XmStringCreateSimple( "TAS Slope" );
2089 else if((detail_set->PARENT != NULL)&&((XTAS_CTX_LOADED & XTAS_LOADED)==XTAS_LOADED))
2090 text = XmStringCreateSimple( "Ref. Slope" );
2091 else
2092 text = XmStringCreateSimple( "Output Slope" );
2093
2094 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2095 XmNlabelString, text,
2096 XmNtopAttachment, XmATTACH_FORM,
2097 XmNleftAttachment, XmATTACH_WIDGET,
2098 XmNleftWidget, label_widget,
2099 XmNwidth, 100,
2100 XmNtopOffset, 2,
2101 XmNleftOffset, 12,
2102 XmNheight, 25,
2103 NULL);
2104 XmStringFree( text );
2105
2106
2107 if ((detail_set->PARENT != NULL) && (((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED) || (XTAS_SIMU_RES == 'Y'))) {
2108 if (XTAS_SIMU_RES == 'Y')
2109 text = XmStringCreateSimple( "SPICE Slope" );
2110 else
2111 text = XmStringCreateSimple( "Slope Crosstalk" );
2112
2113 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2114 XmNlabelString, text,
2115 XmNtopAttachment, XmATTACH_FORM,
2116 XmNleftAttachment, XmATTACH_WIDGET,
2117 XmNleftWidget, label_widget,
2118 XmNwidth, 100,
2119 XmNtopOffset, 2,
2120 XmNleftOffset, 2,
2121 XmNheight, 25,
2122 NULL);
2123 XmStringFree( text );
2124
2125 }
2126
2127 pixmap = XalGetPixmap( label_widget, XTAS_TIME_MAP, tas_state_color, tas_backg_color );
2128
2129 if ( pixmap == XmUNSPECIFIED_PIXMAP )
2130 {
2131 text = XmStringCreateSimple( "Time" );
2132 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2133 XmNlabelString, text,
2134 XmNtopAttachment, XmATTACH_FORM,
2135 XmNleftAttachment, XmATTACH_WIDGET,
2136 XmNleftWidget, label_widget,
2137 XmNwidth, 100,
2138 XmNtopOffset, 2,
2139 XmNleftOffset, 12,
2140 XmNheight, 25,
2141 NULL);
2142
2143 XmStringFree( text );
2144 }
2145 else {
2146 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y')) ){
2147 if (XTAS_SIMU_RES == 'Y')
2148 text = XmStringCreateSimple( "TAS " );
2149 else
2150 text = XmStringCreateSimple( "Ref. " );
2151 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2152 XmNlabelString, text,
2153 XmNtopAttachment, XmATTACH_FORM,
2154 XmNleftAttachment, XmATTACH_WIDGET,
2155 XmNleftWidget, label_widget,
2156 XmNalignment, XmALIGNMENT_END,
2157 XmNwidth, 47,
2158 XmNtopOffset, 2,
2159 XmNleftOffset, 12,
2160 XmNheight, 25,
2161 NULL);
2162 XmStringFree( text );
2163 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2164 XmNlabelType, XmPIXMAP,
2165 XmNlabelPixmap, pixmap,
2166 XmNtopAttachment, XmATTACH_FORM,
2167 XmNleftAttachment, XmATTACH_WIDGET,
2168 XmNleftWidget, label_widget,
2169 XmNalignment, XmALIGNMENT_BEGINNING,
2170 XmNwidth, 53,
2171 XmNtopOffset, 2,
2172 XmNleftOffset, 0,
2173 XmNheight, 25,
2174 NULL);
2175 }
2176 else
2177 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2178 XmNlabelType, XmPIXMAP,
2179 XmNlabelPixmap, pixmap,
2180 XmNtopAttachment, XmATTACH_FORM,
2181 XmNleftAttachment, XmATTACH_WIDGET,
2182 XmNleftWidget, label_widget,
2183 XmNwidth, 100,
2184 XmNtopOffset, 2,
2185 XmNleftOffset, 12,
2186 XmNheight, 25,
2187 NULL);
2188 }
2189
2190 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
2191 if ( pixmap == XmUNSPECIFIED_PIXMAP )
2192 {
2193 if (XTAS_SIMU_RES == 'Y')
2194 text = XmStringCreateSimple( "SPICE Time" );
2195 else
2196 text = XmStringCreateSimple( "Crosstalk Time" );
2197
2198 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2199 XmNlabelString, text,
2200 XmNtopAttachment, XmATTACH_FORM,
2201 XmNleftAttachment, XmATTACH_WIDGET,
2202 XmNleftWidget, label_widget,
2203 XmNwidth, 100,
2204 XmNtopOffset, 2,
2205 XmNleftOffset, 4,
2206 XmNheight, 25,
2207 NULL);
2208 XmStringFree( text );
2209 }
2210
2211 else{
2212 if (XTAS_SIMU_RES == 'Y') {
2213 text = XmStringCreateSimple( "SPICE" );
2214 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2215 XmNlabelString, text,
2216 XmNtopAttachment, XmATTACH_FORM,
2217 XmNleftAttachment, XmATTACH_WIDGET,
2218 XmNleftWidget, label_widget,
2219 XmNalignment, XmALIGNMENT_END,
2220 XmNwidth, 50,
2221 XmNtopOffset, 2,
2222 XmNleftOffset, 0,
2223 XmNheight, 25,
2224 NULL);
2225 XmStringFree( text );
2226 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2227 XmNlabelType, XmPIXMAP,
2228 XmNlabelPixmap, pixmap,
2229 XmNtopAttachment, XmATTACH_FORM,
2230 XmNleftAttachment, XmATTACH_WIDGET,
2231 XmNleftWidget, label_widget,
2232 XmNalignment, XmALIGNMENT_BEGINNING,
2233 XmNwidth, 50,
2234 XmNtopOffset, 2,
2235 XmNleftOffset, 2,
2236 XmNheight, 25,
2237 NULL);
2238
2239 }
2240 else {
2241 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2242 XmNlabelType, XmPIXMAP,
2243 XmNlabelPixmap, pixmap,
2244 XmNtopAttachment, XmATTACH_FORM,
2245 XmNleftAttachment, XmATTACH_WIDGET,
2246 XmNleftWidget, label_widget,
2247 XmNalignment, XmALIGNMENT_END,
2248 XmNwidth, 36,
2249 XmNtopOffset, 2,
2250 XmNleftOffset, 4,
2251 XmNheight, 25,
2252 NULL);
2253 text = XmStringCreateSimple( "Crosstalk" );
2254 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2255 XmNlabelString, text,
2256 XmNtopAttachment, XmATTACH_FORM,
2257 XmNleftAttachment, XmATTACH_WIDGET,
2258 XmNleftWidget, label_widget,
2259 XmNalignment, XmALIGNMENT_BEGINNING,
2260 XmNwidth, 64,
2261 XmNtopOffset, 2,
2262 XmNleftOffset, 0,
2263 XmNheight, 25,
2264 NULL);
2265 XmStringFree( text );
2266 }
2267
2268 }
2269 }
2270
2271
2272 if(detail_set->PARENT != NULL)
2273 {
2274 if(XTAS_SIMU_RES == 'Y')
2275 text = XmStringCreateSimple( "TAS Total" );
2276 else if((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)
2277 text = XmStringCreateSimple( "Ref. Total" );
2278 else
2279 text = XmStringCreateSimple( "Total" );
2280 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2281 XmNlabelString, text,
2282 XmNtopAttachment, XmATTACH_FORM,
2283 XmNleftAttachment, XmATTACH_WIDGET,
2284 XmNleftWidget, label_widget,
2285 XmNwidth, 100,
2286 XmNtopOffset, 2,
2287 XmNleftOffset, 10,
2288 XmNheight, 25,
2289 NULL);
2290 XmStringFree( text );
2291 if((detail_set->PARENT != NULL)&&(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y'))) {
2292 if(XTAS_SIMU_RES == 'Y')
2293 text = XmStringCreateSimple( "SPICE Total" );
2294 else
2295 text = XmStringCreateSimple( "Total Crosstalk" );
2296 label_widget = XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass, dbase_form,
2297 XmNlabelString, text,
2298 XmNtopAttachment, XmATTACH_FORM,
2299 XmNleftAttachment, XmATTACH_WIDGET,
2300 XmNleftWidget, label_widget,
2301 XmNwidth, 100,
2302 XmNtopOffset, 2,
2303 XmNleftOffset, 0,
2304 XmNheight, 25,
2305 NULL);
2306 XmStringFree( text );
2307 }
2308 }
2309
2310 n=0;
2311 XtSetArg( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
2312 XtSetArg( args[n], XmNtopWidget, label_widget ); n++;
2313 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
2314 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
2315 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
2316 XtSetArg( args[n], XmNscrollBarPlacement, XmBOTTOM_RIGHT ); n++;
2317 XtSetArg( args[n], XmNscrollBarDisplayPolicy, XmAS_NEEDED ); n++;
2318 XtSetArg( args[n], XmNscrollingPolicy, XmAUTOMATIC ); n++;
2319 if (detail_set->PARENT == NULL)
2320 item_count = detail_set->CUR_DETAIL->SIZE;
2321 if (item_count < 10) {
2322 XtSetArg( args[n], XmNheight, 8+(item_count*33) ); n++;
2323 }
2324 else {
2325 XtSetArg( args[n], XmNheight, 8+(10*33) ); n++;
2326 }
2327 list_widget = XmCreateScrolledWindow( dbase_form, "XtasScrollWindow", args, n );
2328 XtManageChild( list_widget );
2329 XtVaGetValues (list_widget, XmNhorizontalScrollBar, &tmp, NULL);
2330 XtAddCallback (tmp, XmNvalueChangedCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2331 XtAddCallback (tmp, XmNdragCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2332 XtAddCallback (tmp, XmNincrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2333 XtAddCallback (tmp, XmNdecrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2334 XtAddCallback (tmp, XmNpageIncrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2335 XtAddCallback (tmp, XmNpageDecrementCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2336 XtAddCallback (tmp, XmNtoTopCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2337 XtAddCallback (tmp, XmNtoBottomCallback, XtasDetailColumnsTitleMoveWithHSBCallback, THE_label_widget);
2338
2339 detail_set->SCROLL_DETAIL = list_widget;
2340
2341 XtasFillDetailPathList( detail_set );
2342 }
2343
2344 XtManageChild( form_widget );
2345
2346 return( form_widget );
2347 }
2348
2349 /*---------------------------------------------------------------------------*/
2350 /* */
2351 /* FUNCTION : XtasDetailList */
2352 /* */
2353 /* IN ARGS : .parent : The parent widget. */
2354 /* .path_detail : The path detail description. */
2355 /* */
2356 /* OUT ARGS : The shell widget id. */
2357 /* */
2358 /* OBJECT : The main routine of Detail List Main window command */
2359 /* */
2360 /*---------------------------------------------------------------------------*/
2361 Widget XtasPathDetailList( parent, path_set )
2362 Widget parent;
2363 XtasPathListSetStruct *path_set;
2364 {
2365 Widget main_window;
2366 Arg args[20];
2367 int n;
2368 int c;
2369 int width1 ;
2370 int width2 ;
2371 ttvcritic_list *detail_list, *critic_sim ;
2372 chain_list *head = NULL;
2373 XtasDetailPathSetStruct *detail_set,*detail_set2;
2374 static XtasWindowStruct *tas_winfos;
2375 char text_title[128];
2376 // XtasChainJmpList *cur_detail_save, *detail_list_save;
2377
2378
2379 if (XTAS_DETPATHSELECTEDWIDGET != NULL) {
2380 XtasDetPathDeselect (XTAS_DETPATHSELECTEDWIDGET);
2381 XTAS_DETPATHSELECTEDWIDGET = NULL;
2382 }
2383
2384 if((detail_set = XtasTtvGetDelayList(path_set)) == NULL)
2385 return(NULL) ;
2386
2387 if(XTAS_SIMU_RES == 'Y') {
2388 // cur_detail_save = detail_set->CUR_DETAIL;
2389 // detail_list_save = detail_set->DETAIL_LIST;
2390 tas_winfos = (XtasWindowStruct *)path_set->DETAIL_SESSION->DATA;
2391 detail_set2 = (XtasDetailPathSetStruct *) tas_winfos->userdata;
2392 // detail_set->CUR_DETAIL = detail_set2->CUR_DETAIL;
2393 // detail_set->DETAIL_LIST = detail_set2->DETAIL_LIST;
2394
2395 head = (chain_list *) detail_set2->CUR_DETAIL->DATA;
2396 critic_sim = (ttvcritic_list *)head->DATA;
2397
2398 head = (chain_list *) detail_set->CUR_DETAIL->DATA;
2399 detail_list = (ttvcritic_list *) head->DATA;
2400
2401 while (detail_list && critic_sim) {
2402 detail_list->SIMSLOPE = critic_sim->SIMSLOPE;
2403 detail_list->SIMDELAY = critic_sim->SIMDELAY;
2404 critic_sim = critic_sim->NEXT;
2405 detail_list = detail_list->NEXT;
2406 }
2407
2408
2409 XtasRemoveDetailPathSession (tas_winfos);
2410 }
2411
2412 tas_current_signal = NULL;
2413
2414 tas_winfos = (XtasWindowStruct *) mbkalloc( sizeof(XtasWindowStruct) );
2415
2416 head = (chain_list *)detail_set->CUR_DETAIL->DATA ;
2417 detail_list = head->DATA;
2418
2419 if ( path_set->PARAM->CRITIC == 'D' )
2420 c = path_set->PARAM->PATH_ITEM ;
2421 else {
2422 c = 0;
2423 while( detail_list!=NULL)
2424 {
2425 detail_list = detail_list->NEXT;
2426 c++;
2427 }
2428 c = c-1; /* pour correspondre au nombre effectif de lignes */
2429 }
2430
2431 if( !XTAS_DISPLAY_NEW )
2432 {
2433 if(((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)||(XTAS_SIMU_RES == 'Y')) {
2434 if (c<10) width1 = 1205;
2435 else width1 = 1225;
2436 }
2437 else {
2438 if (c<10) width1 = 915 ;
2439 else width1 = 935 ;
2440 }
2441 if (c<10) width2 = 810 ;
2442 else width2 = 830 ;
2443 }
2444 else
2445 {
2446 width1 = 850 ;
2447 width2 = 650 ;
2448 }
2449
2450 if(path_set->PARAM->CRITIC != 'D')
2451 tas_winfos->topwidget = XtVaCreatePopupShell( NULL, topLevelShellWidgetClass, parent,
2452 XmNwidth, width1,
2453 XmNallowShellResize, False,
2454 XmNdeleteResponse, XmDESTROY,
2455 NULL );
2456 else
2457 tas_winfos->topwidget = XtVaCreatePopupShell( NULL, topLevelShellWidgetClass, parent,
2458 XmNwidth, width2,
2459 XmNallowShellResize, False,
2460 XmNdeleteResponse, XmDESTROY,
2461 NULL );
2462
2463 tas_winfos->userdata = detail_set;
2464
2465 if(path_set->PARAM->CRITIC != 'D')
2466 {
2467 detail_set->PARENT = path_set;
2468 path_set->DETAIL_SESSION = addchain(path_set->DETAIL_SESSION,tas_winfos) ;
2469 }
2470 XTAS_DETPATH_SESSION = addchain(XTAS_DETPATH_SESSION,tas_winfos) ;
2471
2472 n = 0;
2473
2474 if ( path_set->PARAM->CRITIC == 'D' )
2475 {
2476 sprintf (text_title, XTAS_NAME": Delay Window - %s", XtasMainParam->ttvfig->INFO->FIGNAME);
2477 }
2478 else
2479 {
2480 sprintf (text_title, XTAS_NAME": Path Detail Window - %s", XtasMainParam->ttvfig->INFO->FIGNAME);
2481 }
2482 XtSetArg( args[n], XmNtitle , text_title); n++;
2483 XtSetValues( tas_winfos->topwidget, args, n );
2484
2485 detail_set->TOP_LEVEL = tas_winfos->topwidget;
2486
2487 /*------------------------------------------------*/
2488 /* Create the Alliance applications standard Icon */
2489 /*------------------------------------------------*/
2490 if ( path_set->PARAM->CRITIC == 'D' )
2491 XalCustomIcon( tas_winfos->topwidget, XTAS_EXEC_MAP );
2492 else
2493 XalCustomIcon( tas_winfos->topwidget, XTAS_DETA_MAP );
2494
2495 n = 0;
2496 main_window = XmCreateMainWindow( tas_winfos->topwidget, "XtasMain", args, n );
2497 XtManageChild( main_window );
2498
2499 tas_winfos->menwidget = XtasCreateDetailMenus( main_window ,tas_winfos );
2500 XtManageChild( tas_winfos->menwidget );
2501
2502 tas_winfos->wrkwidget = XtasCreateDetailList( main_window, tas_winfos, detail_set, c );
2503 XtManageChild( tas_winfos->wrkwidget );
2504 if((path_set->PARAM->CRITIC != 'D')&&(XTAS_SIMU_RES == 'Y')) {
2505 tas_winfos->userinfos = XTAS_SIMU;
2506 // detail_set->CUR_DETAIL = cur_detail_save;
2507 // detail_set->DETAIL_LIST = detail_list_save;
2508 XTAS_SIMU_RES = 'N';
2509 }
2510 else if ((path_set->PARAM->CRITIC != 'D')&&((XTAS_CTX_LOADED & XTAS_LOADED) == XTAS_LOADED)) {
2511 tas_winfos->userinfos = XTAS_CTK;
2512 }
2513
2514 /*----------------------------------------*/
2515 /* Creates a Motif Error and Warning Boxs */
2516 /*----------------------------------------*/
2517 tas_winfos->errwidget = XalCreateErrorBox( tas_winfos->wrkwidget );
2518 tas_winfos->warwidget = XalCreateWarningBox( tas_winfos->wrkwidget );
2519
2520 XmMainWindowSetAreas( main_window,
2521 tas_winfos->menwidget,
2522 (Widget) NULL,
2523 (Widget) NULL,
2524 (Widget) NULL,
2525 tas_winfos->wrkwidget );
2526
2527 XtPopup( tas_winfos->topwidget, XtGrabNone );
2528
2529 return ( tas_winfos->topwidget );
2530 }
2531