1 /****************************************************************************/
3 /* Chaine de CAO & VLSI Alliance */
5 /* Produit : XTAS Version 5 */
6 /* Fichier : xtas_detpath.c */
8 /* (c) copyright 1991-1998 Laboratoire LIP6 equipe ASIM */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
12 /* Author(s) : Nizar ABDALLAH Date : 01/04/1993 */
14 /* Modified by : Date : ../../.... */
15 /* Modified by : Date : ../../.... */
16 /* Modified by : Date : ../../.... */
18 /****************************************************************************/
21 /****************************************************************************/
24 /*--------------------------------------------------------------------------*/
26 /*--------------------------------------------------------------------------*/
28 #include "xtas_detpath_menu.h"
29 #include "xtas_detpath_button.h"
31 #define XTAS_DETAIL_FROM_LOFFSET_G 8
32 #define XTAS_DETAIL_TP_LOFFSET_T 6
34 extern char XTAS_SIMU_RES
;
35 /*--------------------------------------------------------------------------*/
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
;
46 /*---------------------------------------------------------------------------*/
48 /*---------------------------------------------------------------------------*/
49 /*---------------------------------------------------------------------------*/
51 /* FUNCTION : XtasDetailColumnsTitleMoveWithHSBCallback */
53 /*---------------------------------------------------------------------------*/
54 void XtasDetailColumnsTitleMoveWithHSBCallback (hsb
, label
, call_data
)
62 if (XTAS_DISPLAY_NEW
== 0)
63 loffset
= XTAS_DETAIL_FROM_LOFFSET_G
;
65 loffset
= XTAS_DETAIL_TP_LOFFSET_T
;
67 XtVaGetValues (hsb
, XmNvalue
, &value
, NULL
);
69 XtVaSetValues (label
, XmNleftOffset
, (loffset
- value
), NULL
);
72 /*---------------------------------------------------------------------------*/
73 void XtasRemoveDetailPathSession(window
)
74 XtasWindowStruct
*window
;
76 chain_list
*head
= XTAS_DETPATH_SESSION
;
77 XtasWindowStruct
*data
;
78 XtasDetailPathSetStruct
*detail_set
;
83 for(; head
!= NULL
; head
= head
->NEXT
)
86 if((window
== NULL
) || (window
== data
))
88 detail_set
= data
->userdata
;
89 if(detail_set
->PARENT
!= NULL
)
91 for(chain
= detail_set
->PARENT
->DETAIL_SESSION
; chain
!= NULL
;
94 if(chain
->DATA
== window
) {
96 XtasDestroySimuParams ();
100 XtasFreeDetailPathSetStruct(detail_set
);
101 XtDestroyWidget( data
->topwidget
);
109 freechain( XTAS_DETPATH_SESSION
);
110 XTAS_DETPATH_SESSION
= NULL
;
112 else if(head
!= NULL
)
113 XTAS_DETPATH_SESSION
= delchain(XTAS_DETPATH_SESSION
,head
) ;
114 if (XtasVisualPathWidget
) {
115 XtDestroyWidget (XtasVisualPathWidget
);
116 XtasVisualPathWidget
= NULL
;
118 if (XtasSimuParamWidget
) {
119 XtDestroyWidget (XtasSimuParamWidget
);
120 XtasSimuParamWidget
= NULL
;
123 XTAS_DETPATHSELECTEDWIDGET
= NULL
;
126 /*---------------------------------------------------------------------------*/
127 void XtasSaveDetail(file
,detailset
,infos
)
129 XtasDetailPathSetStruct
*detailset
;
132 chain_list
*head
= (chain_list
*)detailset
->CUR_DETAIL
->DATA
;
133 ttvcritic_list
* critic
;
134 ttvcritic_list
*auxcritic
;
146 long othercumul
= 0 ;
158 if(detailset
->PARENT
!= NULL
)
160 if(detailset
->PARENT
->PARAM
->CRITIC
== 'Y')
162 else if(detailset
->PARENT
->PARAM
->CRITIC
== 'P')
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
) ;
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
) ;
184 critic
= (ttvcritic_list
*)head
->DATA
;
185 while(critic
->NEXT
!= NULL
)
187 auxcritic
= critic
->NEXT
;
188 if((auxcritic
->TYPE
& TTV_FIND_RC
) == TTV_FIND_RC
)
192 if(critic
->SNODE
== TTV_UP
)
196 name1
= critic
->NAME
;
197 if(((auxcritic
->TYPE
& TTV_FIND_HZ
) == TTV_FIND_HZ
) &&
198 (auxcritic
->NEXT
== NULL
))
200 else if(auxcritic
->SNODE
== TTV_UP
)
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
;
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
;
222 slope
= auxcritic
->SLOPE
;
223 delay
= auxcritic
->DELAY
+critic
->DATADELAY
;
224 cumul
+= auxcritic
->DELAY
+critic
->DATADELAY
;
229 XtasPrintLine(file
,typedelay
,sizetype
,delay
,sizedelay
,otherdelay
,sizeotherdelay
,cumul
,sizecumul
,othercumul
,sizeothercumul
,
230 slope
,sizeslope
,otherslope
,sizeotherslope
,name1
,sizename1
,slope1
,slope2
,
232 critic
= critic
->NEXT
;
235 if(i
> detailset
->CUR_DETAIL
->SIZE
)
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") ;
247 /*---------------------------------------------------------------------------*/
249 void XtasDetailSaveCallback( widget
, client_data
, call_data
)
251 XtPointer client_data
;
254 XtasDetailwidtab
= (XtasWindowStruct
*)client_data
;
256 XtasSelectFileCallback( widget
, (XtPointer
)XTAS_DETA_MAP
, call_data
) ;
259 void XtasDetailSaveSelectFileOk (void)
263 if(XtasDataFileName
!= NULL
)
265 file
= fopen(XtasDataFileName
,"a") ;
268 XtasSaveDetail(file
,(XtasDetailPathSetStruct
*)XtasDetailwidtab
->userdata
,XtasDetailwidtab
->userinfos
) ;
273 XalDrawMessage( XtasErrorWidget
, XTAS_NOPENFL
);
278 /*---------------------------------------------------------------------------*/
280 /* FUNCTION : XtasDetailCloseCallback */
282 /* IN ARGS : .widget : The widget on which the event occurs. */
283 /* .top : The window toplevel widget id. */
284 /* .call_data : Not significant. */
286 /* OUT ARGS : ( void ) */
290 /*---------------------------------------------------------------------------*/
291 void XtasDetailCloseCallback( widget
, client_data
, call_data
)
293 XtPointer client_data
;
296 XtasWindowStruct
*top
= (XtasWindowStruct
*)client_data
;
298 XtasRemoveDetailPathSession(top
) ;
300 /*---------------------------------------------------------------------------*/
302 /* FUNCTION : XtasDetailCloseCallback */
304 /* IN ARGS : .widget : The widget on which the event occurs. */
305 /* .top : The window toplevel widget id. */
306 /* .call_data : Not significant. */
308 /* OUT ARGS : ( void ) */
312 /*---------------------------------------------------------------------------*/
313 //void XtasDetailSimuResCloseCallback( widget, client_data , call_data )
315 // XtPointer client_data ;
316 // XtPointer call_data;
318 // XtasWindowStruct *top = (XtasWindowStruct *)client_data ;
319 //// XtDestroyWidget (top->topwidget);
320 // XtUnmanageChild (top->topwidget);
323 /*---------------------------------------------------------------------------*/
325 /* FUNCTION : XtasDetailButtonsCallback */
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. */
331 /* OUT ARGS : ( void ) */
333 /* OBJECT : The callback function for the Options/Button's command */
335 /*---------------------------------------------------------------------------*/
336 void XtasDetailButtonsCallback( widget
, client_data
, call_data
)
338 XtPointer client_data
;
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
);
349 XtasOptionsButtonsTreat( widtab
->wrkwidget
, &widtab
->butwidget
,
350 XtasDetailButtonMenus
, XtasDetailButtonOptions
);
353 /*---------------------------------------------------------------------------*/
354 void XtasSetDetailInfo(detailset
,critic
)
355 XtasDetailPathSetStruct
*detailset
;
356 ttvcritic_list
* critic
;
358 long delay
= 0, refdelay
= 0;
361 if((critic
!= NULL
) && (detailset
!= NULL
))
363 if ( critic
->SNODE
== TTV_UP
)
364 XtasSetLabelString( detailset
->NODE_RF
, "(Rise)");
366 XtasSetLabelString( detailset
->NODE_RF
, "(Fall)");
367 XmTextSetString( detailset
->NODE_NAME
, critic
->NAME
);
369 while( critic
->NEXT
!= NULL
)
371 delay
+= critic
->DELAY
+critic
->DATADELAY
;
372 refdelay
+= critic
->REFDELAY
+critic
->DATADELAY
;
373 critic
= critic
->NEXT
;
375 delay
+= critic
->DELAY
+critic
->DATADELAY
;
376 if ( critic
->SNODE
== TTV_UP
)
377 XtasSetLabelString( detailset
->ROOT_RF
, "(Rise)");
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
);
386 /*---------------------------------------------------------------------------*/
388 /* FUNCTION : XtasSelectDelayCallback */
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. */
394 /* OUT ARGS : ( void ) */
396 /* OBJECT : The callback function for the focus in and out. */
398 /*---------------------------------------------------------------------------*/
399 void XtasSelectDelayCallback( widget
, client_data
, call_data
)
401 XtPointer client_data
;
404 if(xtas_current_detail
!= NULL
)
405 XtasSetDetailInfo(xtas_current_detail
,
406 (ttvcritic_list
*)((chain_list
*)client_data
)->DATA
) ;
409 /*---------------------------------------------------------------------------*/
411 /* FUNCTION : XtasDetailFocusCallback */
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. */
417 /* OUT ARGS : ( void ) */
419 /* OBJECT : The callback function for the focus in and out. */
421 /*---------------------------------------------------------------------------*/
422 void XtasDetailFocusCallback( widget
, client_data
, call_data
)
424 XtPointer client_data
;
427 if(tas_current_signal
!= NULL
)
429 XtFree( tas_current_signal
) ;
431 tas_current_signal
= NULL
;
432 xtas_current_detail
= (XtasDetailPathSetStruct
*)client_data
;
434 /*---------------------------------------------------------------------------*/
436 /* FUNCTION : XtasPathsDeselect */
438 /* OUT ARGS : ( void ) */
440 /*---------------------------------------------------------------------------*/
441 void XtasDetPathDeselect( widget
)
447 parent
= XtParent (widget
);
448 XtVaGetValues(parent
, XmNbackground
,&bg
,NULL
);
449 XtVaSetValues(widget
, XmNcursorPositionVisible
, False
, XmNborderColor
, bg
, NULL
) ;
453 /*---------------------------------------------------------------------------*/
455 /* FUNCTION : XtasDetailFocusNameCallback */
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. */
461 /* OUT ARGS : ( void ) */
463 /* OBJECT : The callback function for the focus in and out. */
465 /*---------------------------------------------------------------------------*/
466 void XtasDetailFocusNameCallback( widget
, client_data
, call_data
)
468 XtPointer client_data
;
473 if(tas_current_signal
!= NULL
)
475 XtFree( tas_current_signal
) ;
478 if (XTAS_DETPATHSELECTEDWIDGET
!= NULL
)
479 XtasDetPathDeselect (XTAS_DETPATHSELECTEDWIDGET
);
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
;
488 /*---------------------------------------------------------------------------*/
490 /* FUNCTION : XtasLosingDetailFocusCallback */
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. */
496 /* OUT ARGS : ( void ) */
498 /* OBJECT : The callback function for the focus in and out. */
500 /*---------------------------------------------------------------------------*/
501 void XtasLosingDetailFocusCallback( widget
, signal
, call_data
)
506 XtVaSetValues( widget
, XmNcursorPositionVisible
, False
,NULL
);
509 /*---------------------------------------------------------------------------*/
511 /* FUNCTION : XtasDetailDetailCallback */
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. */
517 /* OUT ARGS : ( void ) */
519 /* OBJECT : The callback function for the View command */
521 /*---------------------------------------------------------------------------*/
522 void XtasDetailDetailCallback( widget
, client_data
, call_data
)
524 XtPointer client_data
;
527 XtasWindowStruct
*widtab
= (XtasWindowStruct
*)client_data
;
529 if( tas_current_signal
!= NULL
)
531 XalSetCursor( widtab
->topwidget
, WAIT
);
532 XalForceUpdate( widtab
->topwidget
);
533 XtasSignalsDetail( widtab
->wrkwidget
, tas_current_signal
);
534 XalSetCursor( widtab
->topwidget
, NORMAL
);
538 XalDrawMessage( widtab
->errwidget
, XTAS_NSIGERR
);
542 /*---------------------------------------------------------------------------*/
544 /* FUNCTION : XtasCtkInfoCallback */
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. */
550 /* OUT ARGS : ( void ) */
552 /* OBJECT : The callback function for the View command */
554 /*---------------------------------------------------------------------------*/
555 void XtasCtkInfoCallback( widget
, client_data
, call_data
)
557 XtPointer client_data
;
561 ttvcritic_list
*critic
;
564 XtasWindowStruct
*widtab
= (XtasWindowStruct
*)client_data
;
566 info_user
= ((XtasDetailPathSetStruct
*)((XtasWindowStruct
*)client_data
)->userdata
)->INFO_USER
;
567 if( tas_current_signal
&& xtas_current_detail
)
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.");
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
;
581 while(strcmp(critic
->NAME
,tas_current_signal
))
582 critic
= critic
->NEXT
;
583 ptsig
= ttv_getsig (XtasMainParam
->ttvfig
, tas_current_signal
);
585 if(critic
->SNODE
== TTV_UP
)
586 XtasDisplayCtkInfo( widtab
->wrkwidget
, &ptsig
->NODE
[1], widtab
->errwidget
);
588 XtasDisplayCtkInfo( widtab
->wrkwidget
, &ptsig
->NODE
[0], widtab
->errwidget
);
590 XalSetCursor( widtab
->topwidget
, NORMAL
);
591 XtasSetLabelString( info_user
, " ");
592 XalForceUpdate( widtab
->topwidget
);
597 XalDrawMessage( widtab
->errwidget
, XTAS_NSIGERR
);
600 /*---------------------------------------------------------------------------*/
605 /*---------------------------------------------------------------------------*/
606 void XtasNextDetailCallback( widget
, client_data
, call_data
)
608 XtPointer client_data
;
611 XtasDetailPathSetStruct
*detail_set
= (XtasDetailPathSetStruct
*)client_data
;
613 if(detail_set
->CUR_DETAIL
->NEXT
!= NULL
)
615 detail_set
->CUR_DETAIL
= detail_set
->CUR_DETAIL
->NEXT
;
616 if (XTAS_DISPLAY_NEW
)
617 XtasFillDelayList ( detail_set
) ;
619 XtasFillDetailPathList(detail_set
) ;
620 XtasSetDetailInfo(detail_set
,(ttvcritic_list
*)((chain_list
*)detail_set
->CUR_DETAIL
->DATA
)->DATA
) ;
624 /*---------------------------------------------------------------------------*/
629 /*---------------------------------------------------------------------------*/
630 void XtasPrevDetailCallback( widget
, client_data
, call_data
)
632 XtPointer client_data
;
635 XtasDetailPathSetStruct
*detail_set
= (XtasDetailPathSetStruct
*)client_data
;
637 if(detail_set
->CUR_DETAIL
->PREV
!= NULL
)
639 detail_set
->CUR_DETAIL
= detail_set
->CUR_DETAIL
->PREV
;
640 if (XTAS_DISPLAY_NEW
)
641 XtasFillDelayList ( detail_set
) ;
643 XtasFillDetailPathList(detail_set
) ;
644 XtasSetDetailInfo(detail_set
,(ttvcritic_list
*)((chain_list
*)detail_set
->CUR_DETAIL
->DATA
)->DATA
) ;
648 /*---------------------------------------------------------------------------*/
650 /* FUNCTION : XtasGetSigNameCallback */
652 /* OBJECT : Get current signame if click on the scrolled list */
653 /* Display info at the bottom */
655 /*---------------------------------------------------------------------------*/
657 void XtasGetSigNameCallback(w
, client_data
, call_data
)
659 XtPointer client_data
;
662 XmListCallbackStruct
*cbs
;
664 ttvcritic_list
*critic
;
665 XtasDetailPathSetStruct
*current_detail
= NULL
;
671 static Widget last_info_widget
;
672 static XtasDetailPathSetStruct
* last_detail
;
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 */
684 while((head
!= NULL
) && (size
++ < current_detail
->CUR_DETAIL
->SIZE
))
687 while (critic
&& (cbs
) && (i
< cbs
->item_position
)) {
688 critic
= critic
->NEXT
;
691 if((i
>= cbs
->item_position
) && critic
){ /* if signal founded in list */
698 if((tas_current_signal
!= NULL
) && ( last_detail
== current_detail
)){
699 mbkfree( tas_current_signal
) ;
700 tas_current_signal
= NULL
;
703 sprintf(buf
, "%s", critic
->NAME
) ;
704 tas_current_signal
= strdup ( buf
) ;
705 if ( tas_current_signal
&& current_detail
->INFO_PAGE
)
707 if (( last_info_widget
) && ( last_detail
== current_detail
))
708 XtDestroyWidget ( last_info_widget
) ;
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",
717 current_detail
->INFO_PAGE
,
719 last_info_widget
= info_form
;
720 XtasFillInfosForm( info_form
, tas_current_signal
) ;
721 last_detail
= current_detail
;
724 XtasSelectDelayCallback( w
, (XtPointer
)head
, call_data
) ;
727 /*---------------------------------------------------------------------------*/
729 /* New display of the path details */
731 /*---------------------------------------------------------------------------*/
732 void XtasFillDetailPathList2(detail_set
, label_widget
)
733 XtasDetailPathSetStruct
*detail_set
;
738 ttvcritic_list
*critic
;
739 long total
= (long)0 ;
740 long totalnew
= (long)0 ;
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] ;
749 Widget list_widget
, tmp
;
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
;
767 while((head
!= NULL
) && (size
++ < detail_set
->CUR_DETAIL
->SIZE
))
770 while ( critic
!= NULL
)
772 if ((detail_set
->PARENT
!= NULL
)&&(XTAS_SIMU_RES
== 'Y')) {
773 totalnew
+= critic
->SIMDELAY
;
774 total
+= critic
->REFDELAY
+critic
->DATADELAY
;
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
;
781 total
+= critic
->DELAY
+critic
->DATADELAY
;
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");
788 sprintf(type_rc_gate
,"RC");
791 sprintf(type_rc_gate
," ");
794 capa
= XtasPlaceFloatString(critic
->CAPA
/1000.0) ; /* pF */
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
) ;
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
) ;
806 tp
= XtasPlaceNbStringTTVUnit(critic
->DELAY
+critic
->DATADELAY
,TTV_UNIT
) ;
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
) ;
814 cartotal
= XtasPlaceNbStringTTVUnit(total
,TTV_UNIT
) ;
818 if ((detail_set
->PARENT
!= NULL
)&&(XTAS_SIMU_RES
== 'Y')) {
819 slopenew
= XtasPlaceNbStringTTVUnit(critic
->SIMSLOPE
,TTV_UNIT
) ;
820 slope
= XtasPlaceNbStringTTVUnit(critic
->REFSLOPE
,TTV_UNIT
) ;
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
) ;
827 slope
= XtasPlaceNbStringTTVUnit(critic
->SLOPE
,TTV_UNIT
) ;
829 /*- Type de front -*/
830 if(critic
->SNODE
== TTV_UP
)
831 sprintf(type_front
,"R ") ;
833 sprintf(type_front
,"F ") ;
835 /*- Type de front -*/
836 sprintf(signame
,"%s",critic
->NAME
);
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
);
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
);
849 text
= XmStringCreateSimple (text_line
) ;
850 XmListAddItemUnselected ( list_widget
, text
, i
) ;
851 XmStringFree (text
) ;
854 critic
= critic
->NEXT
;
859 XtAddCallback (list_widget
,
860 XmNbrowseSelectionCallback
,
861 XtasGetSigNameCallback
,
862 (XtPointer
)detail_set
);
864 XtAddCallback (list_widget
,
865 XmNdefaultActionCallback
,
866 XtasDetailDetailCallback
,
867 (XtPointer
)detail_set
);
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
);
880 void XtasTestCallBack(widget
, client_data
, call_data
)
882 XtPointer client_data
;
886 XalDrawMessage(XtasErrorWidget
, "Attention");
888 /*---------------------------------------------------------------------------*/
893 /*---------------------------------------------------------------------------*/
894 void XtasFillDetailPathList(detail_set
)
895 XtasDetailPathSetStruct
*detail_set
;
902 Pixmap r_pixmap
, f_pixmap
, v_pixmap
, gt_pixmap
, rc_pixmap
;
907 ttvcritic_list
*critic
;
908 Pixel tas_state_color
,tas_backg_color
;
909 long total
= (long)0 ;
910 long totalnew
= (long)0 ;
913 if (detail_set
->ROW_DETAIL
!= NULL
) {
914 if(XTAS_SIMU_RES
== 'N')
915 XtDestroyWidget( detail_set
->ROW_DETAIL
);
918 row_widget
= XtVaCreateWidget( "XtasDetailRow",xmRowColumnWidgetClass
, detail_set
->SCROLL_DETAIL
,
919 XmNorientation
, XmVERTICAL
,
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
);
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
);
931 value
= (char *) mbkalloc ( 15*sizeof( char ) );
933 head
= detail_set
->CUR_DETAIL
->DATA
;
935 while((head
!= NULL
) && (size
++ < detail_set
->CUR_DETAIL
->SIZE
))
938 if ((detail_set
->PARENT
!= NULL
)&&((XTAS_CTX_LOADED
& XTAS_LOADED
)== XTAS_LOADED
)) {
939 totalnew
= critic
->DELAY
;
940 total
= critic
->REFDELAY
;
943 total
= critic
->DELAY
;
945 while ( critic
->NEXT
!= NULL
)
949 if ((detail_set
->PARENT
!= NULL
)&&(XTAS_SIMU_RES
== 'Y')) {
950 totalnew
+= critic
->NEXT
->SIMDELAY
;
951 total
+= critic
->NEXT
->REFDELAY
+critic
->DATADELAY
;
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
;
959 total
+= critic
->NEXT
->DELAY
+critic
->DATADELAY
;
962 sub_form
= XtCreateManagedWidget( "XtasDeskMainForm", xmFormWidgetClass
, row_widget
, args
, n
);
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
);
974 XmTextSetString( tmp_widget
, critic
->NAME
);
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 );
981 if ( (r_pixmap
== XmUNSPECIFIED_PIXMAP
) || (f_pixmap
== XmUNSPECIFIED_PIXMAP
) )
983 text
= ( critic
->SNODE
== TTV_UP
) ? XmStringCreateSimple("rising") : XmStringCreateSimple("falling");
984 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, sub_form
,
985 XmNtopAttachment
, XmATTACH_FORM
,
987 XmNlabelString
, text
,
988 XmNleftAttachment
, XmATTACH_WIDGET
,
989 XmNleftWidget
, tmp_widget
,
994 XmStringFree( text
);
999 v_pixmap
= ( critic
->SNODE
== TTV_UP
) ? r_pixmap
: f_pixmap
;
1000 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, sub_form
,
1001 XmNtopAttachment
, XmATTACH_FORM
,
1003 XmNlabelType
, XmPIXMAP
,
1004 XmNlabelPixmap
, v_pixmap
,
1005 XmNleftAttachment
, XmATTACH_WIDGET
,
1006 XmNleftWidget
, tmp_widget
,
1014 if ( (rc_pixmap
== XmUNSPECIFIED_PIXMAP
) || (gt_pixmap
== XmUNSPECIFIED_PIXMAP
) )
1016 if((critic
->NEXT
->TYPE
& TTV_FIND_RC
) != TTV_FIND_RC
)
1017 XmStringCreateSimple("GT");
1019 XmStringCreateSimple("RC");
1020 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, sub_form
,
1021 XmNtopAttachment
, XmATTACH_FORM
,
1023 XmNlabelString
, text
,
1024 XmNleftAttachment
, XmATTACH_WIDGET
,
1025 XmNleftWidget
, label_widget
,
1030 XmStringFree( text
);
1035 if((critic
->NEXT
->TYPE
& TTV_FIND_RC
) != TTV_FIND_RC
)
1036 v_pixmap
= gt_pixmap
;
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,
1044 XmNlabelType
, XmPIXMAP
,
1045 XmNlabelPixmap
, v_pixmap
,
1046 XmNleftAttachment
, XmATTACH_WIDGET
,
1047 XmNleftWidget
, label_widget
,
1052 // XtAddCallback(label_widget, XmNactivateCallback, XtasTestCallBack, (XtPointer)NULL);
1056 if ( (r_pixmap
== XmUNSPECIFIED_PIXMAP
) || (f_pixmap
== XmUNSPECIFIED_PIXMAP
) ||
1057 ( ( ( critic
->NEXT
->TYPE
& TTV_FIND_HZ
) == TTV_FIND_HZ
) && ( critic
->NEXT
->NEXT
== NULL
) ))
1059 if ( ( ( critic
->NEXT
->TYPE
& TTV_FIND_HZ
) == TTV_FIND_HZ
)
1060 && ( critic
->NEXT
->NEXT
== NULL
) )
1061 text
= XmStringCreateSimple("highZ");
1063 text
= ( critic
->NEXT
->SNODE
== TTV_UP
) ? XmStringCreateSimple("rising") : XmStringCreateSimple("falling");
1066 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, sub_form
,
1067 XmNtopAttachment
, XmATTACH_FORM
,
1069 XmNlabelString
, text
,
1070 XmNleftAttachment
, XmATTACH_WIDGET
,
1071 XmNleftWidget
, label_widget
,
1076 XmStringFree( text
);
1081 v_pixmap
= ( critic
->NEXT
->SNODE
== TTV_UP
) ? r_pixmap
: f_pixmap
;
1084 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, sub_form
,
1085 XmNtopAttachment
, XmATTACH_FORM
,
1087 XmNlabelType
, XmPIXMAP
,
1088 XmNlabelPixmap
, v_pixmap
,
1089 XmNleftAttachment
, XmATTACH_WIDGET
,
1090 XmNleftWidget
, label_widget
,
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
);
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 );
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
);
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 );
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
);
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
);
1150 sprintf( value
, "%.1f pS", critic
->NEXT
->SLOPE
/TTV_UNIT
);
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 );
1157 if((detail_set
->PARENT
!= NULL
)&&(((XTAS_CTX_LOADED
& XTAS_LOADED
) == XTAS_LOADED
)||(XTAS_SIMU_RES
== 'Y'))) {
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
);
1171 if (XTAS_SIMU_RES
== 'Y')
1172 sprintf( value
, "%.1f pS", critic
->NEXT
->SIMSLOPE
/TTV_UNIT
);
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 );
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
);
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
);
1197 sprintf( value
, "%.1f pS", (critic
->NEXT
->DELAY
+critic
->DATADELAY
)/TTV_UNIT
);
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 );
1204 if((detail_set
->PARENT
!= NULL
)&&(((XTAS_CTX_LOADED
& XTAS_LOADED
) == XTAS_LOADED
)||(XTAS_SIMU_RES
== 'Y'))) {
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
);
1218 if (XTAS_SIMU_RES
== 'Y')
1219 sprintf( value
, "%.1f pS", critic
->NEXT
->SIMDELAY
/TTV_UNIT
);
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 );
1228 if(detail_set
->PARENT
!= NULL
)
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
);
1243 sprintf( value
, "%.1f pS", total
/TTV_UNIT
);
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 );
1250 if((detail_set
->PARENT
!= NULL
)&&(((XTAS_CTX_LOADED
& XTAS_LOADED
) == XTAS_LOADED
)||(XTAS_SIMU_RES
== 'Y'))) {
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
);
1264 sprintf( value
, "%.1f pS", totalnew
/TTV_UNIT
);
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 );
1272 critic
= critic
->NEXT
;
1276 XtManageChild( row_widget
);
1282 /*---------------------------------------------------------------------------*/
1284 /* FUNCTION : XtasCreateDetailMenus */
1286 /* IN ARGS : .parent : Parent widget for the Menu Bar. */
1288 /* OUT ARGS : .The value of the Menu Bar widget. */
1290 /* OBJECT : Creates the menu bar of the detail window. */
1292 /*---------------------------------------------------------------------------*/
1293 Widget
XtasCreateDetailMenus( parent
, tas_winfos
)
1295 XtasWindowStruct
*tas_winfos
;
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
;
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
;
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
;
1327 /*-------------------*/
1328 /* Create a menu_bar */
1329 /*-------------------*/
1331 menu_bar
= XmCreateMenuBar( parent
, "XtasMenuBar", args
, n
);
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 */
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 */
1350 XalBuildMenus( menu_bar
, /* The Menu Bar widget id */
1351 XtasDetailMenu
); /* The main menu XalMenus structure */
1357 /*---------------------------------------------------------------------------*/
1359 /* FUNCTION : XtasCreateDetailList */
1361 /* IN ARGS : .parent : The parent widget id. */
1362 /* .path_detail : The path detail description. */
1364 /* OUT ARGS : ( void ) */
1366 /* OBJECT : Creation of the signals window objects. */
1368 /*---------------------------------------------------------------------------*/
1369 Widget
XtasCreateDetailList( parent
, tas_winfos
, detail_set
, item_count
)
1371 XtasWindowStruct
*tas_winfos
;
1372 XtasDetailPathSetStruct
*detail_set
;
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
;
1381 Widget THE_label_widget
;
1387 ttvcritic_list
*critic
;
1389 long delay
= (long)0, newdelay
= (long)0;
1390 Pixel tas_state_color
,tas_backg_color
;
1392 int scrollheight_newdisp
;
1393 XtasSearchPathParamStruct
*params
;
1396 form_widget
= XtVaCreateWidget( "XtasMainPan",
1399 XmNtopAttachment
, XmATTACH_FORM
,
1400 XmNbottomAttachment
, XmATTACH_POSITION
,
1401 XmNbottomPosition
, 99,
1402 XmNleftAttachment
, XmATTACH_POSITION
,
1404 XmNrightAttachment
, XmATTACH_POSITION
,
1405 XmNrightPosition
, 99,
1408 /*------------------------------------------------*/
1409 /* Create a form to manage the first row children */
1410 /*------------------------------------------------*/
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
);
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
;
1424 for ( n
=0; XtasDetailButtonMenus
[n
].pix_file
!= -1 ; n
++ )
1425 XtasDetailButtonMenus
[n
].callback_data
= (XtPointer
) tas_winfos
;
1430 XtSetArg( args
[n
], XmNnumColumns
, 1 ); n
++;
1431 XtSetArg( args
[n
], XmNorientation
, XmHORIZONTAL
); n
++;
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 );
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 );
1443 /*---------------------------------------------------------------------------*/
1444 /* creation d'un separateur */
1445 /*---------------------------------------------------------------------------*/
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
);
1454 /*---------------------------------------------------------------------------*/
1455 /* Create the message area */
1456 /*---------------------------------------------------------------------------*/
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
);
1467 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, form
,
1468 XmNtopAttachment
, XmATTACH_FORM
,
1469 XmNleftAttachment
, XmATTACH_FORM
,
1472 XtasSetLabelString( label_widget
, "Informations Area" );
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
);
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
;
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
);
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
;
1502 /*---------------------------------------------------------------------------*/
1503 /* creation d'un separateur */
1504 /*---------------------------------------------------------------------------*/
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
);
1512 /*------------------------------------------------------------------------------------------------*/
1513 /* Creation de la paned window */
1514 /*------------------------------------------------------------------------------------------------*/
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
);
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
);
1530 /*---------------------------------------------------------------------------------------------*/
1531 /* affichage d'informations generales sur le chemin detaille en cours */
1532 /*---------------------------------------------------------------------------------------------*/
1534 head
= (chain_list
*) detail_set
->CUR_DETAIL
->DATA
;
1535 critic
= (ttvcritic_list
*) head
->DATA
;
1539 form
= XtCreateManagedWidget( "XtasShellSubForm", xmFormWidgetClass
, pan_widget
, args
, n
);
1541 value
= (char *) mbkalloc (1024*sizeof(char));
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
);
1549 sub_form
= XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass
, frame
, args
, n
);
1551 text
= XmStringCreateSimple ("From: ");
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
);
1561 XtVaGetValues( label_widget
, XmNforeground
, &tas_state_color
, XmNbackground
, &tas_backg_color
, NULL
);
1565 if ( critic
->SNODE
== TTV_UP
)
1566 text
= XmStringCreateSimple ("(Rise)");
1568 text
= XmStringCreateSimple ("(Fall)");
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
);
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
;
1607 if (XTAS_SIMU_RES
!= 'Y')
1608 delay
= critic
->DELAY
+critic
->DATADELAY
;
1609 while( critic
->NEXT
!= NULL
)
1611 delay
+= critic
->NEXT
->DELAY
+critic
->DATADELAY
;
1612 if (XTAS_SIMU_RES
== 'Y')
1613 newdelay
+= critic
->NEXT
->SIMDELAY
;
1615 newdelay
+= critic
->NEXT
->DELAY
+critic
->DATADELAY
;
1616 critic
= critic
->NEXT
;
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
);
1627 sub_form
= XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass
, frame
, args
, n
);
1629 text
= XmStringCreateSimple ("To: ");
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
);
1641 if ( critic
->SNODE
== TTV_UP
)
1642 text
= XmStringCreateSimple ("(Rise)");
1644 text
= XmStringCreateSimple ("(Fall)");
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
);
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
;
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
);
1685 sub_form
= XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass
, frame
, args
, n
);
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
);
1694 sprintf( value
, "Total Delay: %.1f pS", delay
/TTV_UNIT
);
1695 XtasSetLabelString( label_widget
, value
);
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
);
1704 sub_form
= XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass
, frame
, args
, n
);
1705 critic
= (ttvcritic_list
*)head
->DATA
;
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
);
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
);
1723 dbase_form
= XtCreateManagedWidget( "XtasTitleForm", xmFormWidgetClass
, frame
, args
, n
);
1725 /*--------------------- recherche de plusieurs details de chemins ----------------------*/
1726 if ( head
->NEXT
!= NULL
)
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
);
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
);
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");
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");
1762 XtasSetLabelString( label_widget
, "Parallel Max Path Detail List");
1765 if (XTAS_SIMU_RES
== 'Y')
1766 XtasSetLabelString( label_widget
, "Simulated Parallel Min Path Detail List");
1768 XtasSetLabelString( label_widget
, "Parallel Min Path Detail List");
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");
1777 XtasSetLabelString( label_widget
, "Critic Max Path Detail List");
1780 if (XTAS_SIMU_RES
== 'Y')
1781 XtasSetLabelString( label_widget
, "Simulated Critic Min Path Detail List");
1783 XtasSetLabelString( label_widget
, "Critic Min Path Detail List");
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");
1791 XtasSetLabelString( label_widget
, "Max Path Detail List");
1794 if (XTAS_SIMU_RES
== 'Y')
1795 XtasSetLabelString( label_widget
, "Simulated Min Path Detail List");
1797 XtasSetLabelString( label_widget
, "Min Path Detail List");
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");
1807 XtasSetLabelString( label_widget
, "Critic Max Access Detail List");
1810 if (XTAS_SIMU_RES
== 'Y')
1811 XtasSetLabelString( label_widget
, "Simulated Critic Min Access Detail List");
1813 XtasSetLabelString( label_widget
, "Critic Min Access Detail List");
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");
1821 XtasSetLabelString( label_widget
, "Max Access Detail List");
1824 if (XTAS_SIMU_RES
== 'Y')
1825 XtasSetLabelString( label_widget
, "Simulated Min Access Detail List");
1827 XtasSetLabelString( label_widget
, "Min Access Detail List");
1833 if(XTAS_DISPLAY_NEW
)
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
)
1845 if(XTAS_SIMU_RES
== 'Y')
1846 text
= XmStringCreateSimple( "TAS Tp" );
1848 text
= XmStringCreateSimple( "Tp" );
1850 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, dbase_form
,
1851 XmNlabelString
, text
,
1852 XmNtopAttachment
, XmATTACH_FORM
,
1853 XmNleftAttachment
, XmATTACH_FORM
,
1854 XmNalignment
, XmALIGNMENT_END
,
1858 XmNleftOffset
, XTAS_DETAIL_TP_LOFFSET_T
,
1861 XmStringFree( text
);
1862 THE_label_widget
= label_widget
;
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" );
1868 text
= XmStringCreateSimple( "Tp CTK" );
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
,
1882 XmStringFree( text
);
1885 if(XTAS_SIMU_RES
== 'Y')
1886 text
= XmStringCreateSimple( "TAS Total" );
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
,
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" );
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
,
1919 XmStringFree( text
);
1922 if(XTAS_SIMU_RES
== 'Y')
1923 text
= XmStringCreateSimple( "TAS Slope" );
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
,
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" );
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
,
1956 XmStringFree( text
);
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
,
1971 XmStringFree( text
);
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
,
1986 XmStringFree( text
);
1987 scrollheight_newdisp
= 300 ;
1991 scrollheight_newdisp
= 200 ; /* if detailpath is call by getdelay */
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
,
2004 /* list_widget will contain the scroll list of detail path */
2005 list_widget
= XtVaCreateManagedWidget ( "XtasSubForm",
2008 XmNheight
, scrollheight_newdisp
,
2010 detail_set
->SCROLL_DETAIL
= list_widget
;
2012 /* list_widget will display info path */
2013 info_w
= XtVaCreateManagedWidget ( "XtasSubForm",
2016 XmNtopAttachment
, XmATTACH_WIDGET
,
2017 XmNtopWidget
, list_widget
,
2019 detail_set
->INFO_PAGE
= info_w
;
2021 if (detail_set
->PARENT
== NULL
)
2022 XtasFillDelayList ( detail_set
) ;
2024 XtasFillDetailPathList2( detail_set
, THE_label_widget
);
2026 else /* old display format */
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
);
2037 text
= XmStringCreateSimple( "From" );
2039 THE_label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, dbase_form
,
2040 XmNlabelString
, text
,
2041 XmNtopAttachment
, XmATTACH_FORM
,
2042 XmNleftAttachment
, XmATTACH_FORM
,
2045 XmNleftOffset
, XTAS_DETAIL_FROM_LOFFSET_G
,
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
,
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
,
2072 XmStringFree( text
);
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
,
2085 XmStringFree( text
);
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" );
2092 text
= XmStringCreateSimple( "Output Slope" );
2094 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, dbase_form
,
2095 XmNlabelString
, text
,
2096 XmNtopAttachment
, XmATTACH_FORM
,
2097 XmNleftAttachment
, XmATTACH_WIDGET
,
2098 XmNleftWidget
, label_widget
,
2104 XmStringFree( text
);
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" );
2111 text
= XmStringCreateSimple( "Slope Crosstalk" );
2113 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, dbase_form
,
2114 XmNlabelString
, text
,
2115 XmNtopAttachment
, XmATTACH_FORM
,
2116 XmNleftAttachment
, XmATTACH_WIDGET
,
2117 XmNleftWidget
, label_widget
,
2123 XmStringFree( text
);
2127 pixmap
= XalGetPixmap( label_widget
, XTAS_TIME_MAP
, tas_state_color
, tas_backg_color
);
2129 if ( pixmap
== XmUNSPECIFIED_PIXMAP
)
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
,
2143 XmStringFree( text
);
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 " );
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
,
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
,
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
,
2190 if((detail_set
->PARENT
!= NULL
)&&(((XTAS_CTX_LOADED
& XTAS_LOADED
) == XTAS_LOADED
)||(XTAS_SIMU_RES
== 'Y'))) {
2191 if ( pixmap
== XmUNSPECIFIED_PIXMAP
)
2193 if (XTAS_SIMU_RES
== 'Y')
2194 text
= XmStringCreateSimple( "SPICE Time" );
2196 text
= XmStringCreateSimple( "Crosstalk Time" );
2198 label_widget
= XtVaCreateManagedWidget( "XtasMainTitles",xmLabelWidgetClass
, dbase_form
,
2199 XmNlabelString
, text
,
2200 XmNtopAttachment
, XmATTACH_FORM
,
2201 XmNleftAttachment
, XmATTACH_WIDGET
,
2202 XmNleftWidget
, label_widget
,
2208 XmStringFree( text
);
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
,
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
,
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
,
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
,
2265 XmStringFree( text
);
2272 if(detail_set
->PARENT
!= NULL
)
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" );
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
,
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" );
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
,
2306 XmStringFree( text
);
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
++;
2325 XtSetArg( args
[n
], XmNheight
, 8+(10*33) ); n
++;
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
);
2339 detail_set
->SCROLL_DETAIL
= list_widget
;
2341 XtasFillDetailPathList( detail_set
);
2344 XtManageChild( form_widget
);
2346 return( form_widget
);
2349 /*---------------------------------------------------------------------------*/
2351 /* FUNCTION : XtasDetailList */
2353 /* IN ARGS : .parent : The parent widget. */
2354 /* .path_detail : The path detail description. */
2356 /* OUT ARGS : The shell widget id. */
2358 /* OBJECT : The main routine of Detail List Main window command */
2360 /*---------------------------------------------------------------------------*/
2361 Widget
XtasPathDetailList( parent
, path_set
)
2363 XtasPathListSetStruct
*path_set
;
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;
2379 if (XTAS_DETPATHSELECTEDWIDGET
!= NULL
) {
2380 XtasDetPathDeselect (XTAS_DETPATHSELECTEDWIDGET
);
2381 XTAS_DETPATHSELECTEDWIDGET
= NULL
;
2384 if((detail_set
= XtasTtvGetDelayList(path_set
)) == NULL
)
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;
2395 head
= (chain_list
*) detail_set2
->CUR_DETAIL
->DATA
;
2396 critic_sim
= (ttvcritic_list
*)head
->DATA
;
2398 head
= (chain_list
*) detail_set
->CUR_DETAIL
->DATA
;
2399 detail_list
= (ttvcritic_list
*) head
->DATA
;
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
;
2409 XtasRemoveDetailPathSession (tas_winfos
);
2412 tas_current_signal
= NULL
;
2414 tas_winfos
= (XtasWindowStruct
*) mbkalloc( sizeof(XtasWindowStruct
) );
2416 head
= (chain_list
*)detail_set
->CUR_DETAIL
->DATA
;
2417 detail_list
= head
->DATA
;
2419 if ( path_set
->PARAM
->CRITIC
== 'D' )
2420 c
= path_set
->PARAM
->PATH_ITEM
;
2423 while( detail_list
!=NULL
)
2425 detail_list
= detail_list
->NEXT
;
2428 c
= c
-1; /* pour correspondre au nombre effectif de lignes */
2431 if( !XTAS_DISPLAY_NEW
)
2433 if(((XTAS_CTX_LOADED
& XTAS_LOADED
) == XTAS_LOADED
)||(XTAS_SIMU_RES
== 'Y')) {
2434 if (c
<10) width1
= 1205;
2438 if (c
<10) width1
= 915 ;
2441 if (c
<10) width2
= 810 ;
2450 if(path_set
->PARAM
->CRITIC
!= 'D')
2451 tas_winfos
->topwidget
= XtVaCreatePopupShell( NULL
, topLevelShellWidgetClass
, parent
,
2453 XmNallowShellResize
, False
,
2454 XmNdeleteResponse
, XmDESTROY
,
2457 tas_winfos
->topwidget
= XtVaCreatePopupShell( NULL
, topLevelShellWidgetClass
, parent
,
2459 XmNallowShellResize
, False
,
2460 XmNdeleteResponse
, XmDESTROY
,
2463 tas_winfos
->userdata
= detail_set
;
2465 if(path_set
->PARAM
->CRITIC
!= 'D')
2467 detail_set
->PARENT
= path_set
;
2468 path_set
->DETAIL_SESSION
= addchain(path_set
->DETAIL_SESSION
,tas_winfos
) ;
2470 XTAS_DETPATH_SESSION
= addchain(XTAS_DETPATH_SESSION
,tas_winfos
) ;
2474 if ( path_set
->PARAM
->CRITIC
== 'D' )
2476 sprintf (text_title
, XTAS_NAME
": Delay Window - %s", XtasMainParam
->ttvfig
->INFO
->FIGNAME
);
2480 sprintf (text_title
, XTAS_NAME
": Path Detail Window - %s", XtasMainParam
->ttvfig
->INFO
->FIGNAME
);
2482 XtSetArg( args
[n
], XmNtitle
, text_title
); n
++;
2483 XtSetValues( tas_winfos
->topwidget
, args
, n
);
2485 detail_set
->TOP_LEVEL
= tas_winfos
->topwidget
;
2487 /*------------------------------------------------*/
2488 /* Create the Alliance applications standard Icon */
2489 /*------------------------------------------------*/
2490 if ( path_set
->PARAM
->CRITIC
== 'D' )
2491 XalCustomIcon( tas_winfos
->topwidget
, XTAS_EXEC_MAP
);
2493 XalCustomIcon( tas_winfos
->topwidget
, XTAS_DETA_MAP
);
2496 main_window
= XmCreateMainWindow( tas_winfos
->topwidget
, "XtasMain", args
, n
);
2497 XtManageChild( main_window
);
2499 tas_winfos
->menwidget
= XtasCreateDetailMenus( main_window
,tas_winfos
);
2500 XtManageChild( tas_winfos
->menwidget
);
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';
2510 else if ((path_set
->PARAM
->CRITIC
!= 'D')&&((XTAS_CTX_LOADED
& XTAS_LOADED
) == XTAS_LOADED
)) {
2511 tas_winfos
->userinfos
= XTAS_CTK
;
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
);
2520 XmMainWindowSetAreas( main_window
,
2521 tas_winfos
->menwidget
,
2525 tas_winfos
->wrkwidget
);
2527 XtPopup( tas_winfos
->topwidget
, XtGrabNone
);
2529 return ( tas_winfos
->topwidget
);