#!/usr/dt/bin/dtksh # # Le sampler avec xutil.sh : La librairie de Pendergrast # typeset XUTILDIR=${XUTILDIR:=.} . ${XUTILDIR}/xutil.sh # ---------------------------------------------------- function MonEventHandler { XmMenuPosition $POPUP $EH_EVENT XtManageChild $POPUP } # ---------------------------------------------------- function GererPanneau { #### Recuperation des parametres graphiques typeset window=$(XtWindow - $ZONE_DE_DESSIN ) typeset display=$(XtDisplay - $ZONE_DE_DESSIN ) #### Nettoyage du graphique ### XClearArea $display $window XFillRectangle $display $window \ -foreground SkyBlue \ 0 85 100 50 # x=0 y=75 largeur=100 hauteur=50 case $1 in carre ) XFillRectangle $display $window \ -foreground red \ 25 85 50 50 # x=25 y=85 largeur=50 hauteur=50 ;; triangle ) XFillPolygon $display $window \ -foreground red \ 50 85 \ 25 135 \ 75 135 ;; cercle ) XFillArc $display $window \ -foreground red \ 25 85 50 50 \ 0 $((360*64)) ;; esac } # ---------------------------------------------------- function Fleches { XmTextGetString VALEUR $TEXTE_ROULETTE case $1 in increment ) XmTextSetString $TEXTE_ROULETTE $(( ++VALEUR )) ;; decrement ) XmTextSetString $TEXTE_ROULETTE $(( --VALEUR )) ;; esac XmTextSetString $TEXTE_ROULETTE "$VALEUR" } # ---------------------------------------------------- function GererListe { #### Recuperation des parametres graphiques typeset window=$(XtWindow - $ZONE_DE_DESSIN ) typeset display=$(XtDisplay - $ZONE_DE_DESSIN ) #### Nettoyage du graphique ### XClearArea $display $window XFillRectangle $display $window \ -foreground SkyBlue \ 0 0 100 70 typeset VALEUR=${CB_CALL_DATA.ITEM} case $VALEUR in bleu ) XtSetValues $BOUTON_DE_COULEUR background:blue \ foreground:black XDrawLine $display $window \ -foreground "black" \ -line_style LineSolid 10 10 90 10 ;; blanc ) XtSetValues $BOUTON_DE_COULEUR background:white \ foreground:black XDrawLine $display $window \ -foreground "black" \ -line_style LineSolid 10 20 90 20 ;; rouge ) XtSetValues $BOUTON_DE_COULEUR background:red \ foreground:black XDrawLine $display $window \ -foreground "black" \ -line_style LineSolid 10 30 90 30 ;; vert ) XtSetValues $BOUTON_DE_COULEUR background:green \ foreground:black XDrawLine $display $window \ -foreground "black" \ -line_style LineSolid 10 40 90 40 ;; noir ) XtSetValues $BOUTON_DE_COULEUR background:black \ foreground:white XDrawLine $display $window \ -foreground "black" \ -line_style LineSolid 10 50 90 50 ;; esac } # ---------------------------------------------------- function GererToggle { #### Recuperation des parametres graphiques typeset window=$(XtWindow - $ZONE_DE_DESSIN ) typeset display=$(XtDisplay - $ZONE_DE_DESSIN ) if (XmToggleButtonGetState $TOG1); then # Le bouton n'est pas coche XFillArc $display $window \ -foreground green \ 25 150 50 50 \ 0 $((360*64)) else # Le bouton est coche XFillArc $display $window \ -foreground yellow \ 25 150 50 50 \ 0 $((360*64)) fi } # ---------------------------------------------------- function ChangerSaisieEchelle { XmTextGetString SCALE_VAL $VALEUR_DE_L_ECHELLE XmScaleSetValue $SCALE $SCALE_VAL } # ---------------------------------------------------- function ChangerEchelle { XmScaleGetValue $SCALE VALEUR XmTextSetString $VALEUR_DE_L_ECHELLE "$VALEUR" } # ---------------------------------------------------- function Bonjour { XmTextGetString NOM_VAL $TEXTE XUcreateapplicationshell TOPLEVEL2 TopLevelShell XUrowcolumn RC $TOPLEVEL2 \ orientation:HORIZONTAL \ numColumns:2 \ packing:PACK_COLUMN XUlabel LABEL2 $RC \ labelString:"Bonjour $NOM_VAL" XUpushbutton QUITTER2 $RC XtAddCallback $QUITTER2 activateCallback "XtDestroyWidget $TOPLEVEL2" XtRealizeWidget $TOPLEVEL2 } ###########_______________________________########### ############# DEBUT DE LA PARTIE UI ################# ###########-------------------------------########### XUinitialize TOPLEVEL Sampler "$0" ### CREATION D UNE MAIN WINDOW POUR LES MENUS ##### XUmainwindow MAIN $TOPLEVEL XUform FORM $MAIN XtAddEventHandler $FORM "ButtonPressMask" False MonEventHandler ############################################################ XUmenubar MB $MAIN ################### LE MENU FILE ########################## XUmenusystem $MB \ FILEMENU "Fichier" Z { \ CHOIX1 "Carre" Z "GererPanneau carre" \ CHOIX2 "Triangle" Z "GererPanneau triangle" \ - - - - \ CHOIX3 "Carre" Z "GererPanneau cercle" \ } ############# RENDRE LE MENU DETACHABLE ############# XtSetValues ${FILEMENU.PULLDOWN} tearOffModel:TEAR_OFF_ENABLED ################### LE MENU AIDE ########################## XUmenusystem $MB \ AIDEMENU "Aide" Z { \ CHOIX1 "Carre" Z "GererPanneau carre" \ } XtSetValues $MB menuHelpWidget:${AIDEMENU} XtManageChild $MB ############################################################# ################## CREATION D'UN POPUP MENU ##################### XUpopupmenu -u POPUP $FORM XUmenusystem $POPUP \ PB1 "Carre" Z "GererPanneau carre" \ PB2 "Triangle" Z "GererPanneau triangle" \ PB3 "Cercle" Z "GererPanneau cercle" ################################################################# ############# CREATION D'UNE FRAME ############### XUframe FRAME1 $FORM \ $(XUattach under $MB 10 left 10) XUlabel FRAME1.TITLE $FRAME1 \ labelString:$'XmLabel & XmText' \ childType:FRAME_TITLE_CHILD \ childVerticalAlignment:ALIGNMENT_BASELINE_TOP XUrowcolumn FRAME1.CHILD $FRAME1 \ orientation:HORIZONTAL \ numColumns:1 ############# TEXTE PUR ################### XUlabel LABEL1 ${FRAME1.CHILD} \ labelString:"Votre nom :" ########################################### ############ ZONE DE SAISIE ############### XUtext TEXTE ${FRAME1.CHILD} \ columns:30 ########################################### ################# CALLBACK ################## XtAddCallback $TEXTE activateCallback Bonjour ############################################# XtManageChild $FRAME1 ################# CREATION DE LA NOUVELLE FRAME : ECHELLE ################# XUframe FRAME2 $FORM \ $(XUattach under $FRAME1 10 left 10) XUlabel FRAME2.TITLE $FRAME2 \ labelString:$'XmScale' \ childType:FRAME_TITLE_CHILD \ childVerticalAlignment:ALIGNMENT_BASELINE_TOP XUrowcolumn FRAME2.CHILD $FRAME2 \ orientation:HORIZONTAL \ numColumns:1 ################# ECHELLE ################## XUscale SCALE ${FRAME2.CHILD} \ showValue:True \ orientation:HORIZONTAL \ minimum:0 \ maximum:100 ### > Jolies marques XUlabel tmp $SCALE labelString:0 XUlabel tmp $SCALE labelString:"|" XUlabel tmp $SCALE labelString:"|" XUlabel tmp $SCALE labelString:"|" XUlabel tmp $SCALE labelString:100 ################# CALLBACK ################## XtAddCallback $SCALE dragCallback ChangerEchelle ############################################# ############ VALEUR DE L ECHELLE ############### XUtext VALEUR_DE_L_ECHELLE ${FRAME2.CHILD} \ value:"0" \ columns:3 ########################################### ################# CALLBACK ################## XtAddCallback $TEXTE activateCallback ChangerSaisieEchelle ############################################# XtManageChild $FRAME2 ################################################################ ################# CREATION DE LA NOUVELLE FRAME : LISTE ################# XUframe FRAME3 $FORM \ $(XUattach under $FRAME2 10 left 10 ) XUlabel FRAME3.TITLE $FRAME3 \ labelString:$'XmCreateScrolledList' \ childType:FRAME_TITLE_CHILD \ childVerticalAlignment:ALIGNMENT_BASELINE_TOP XUrowcolumn FRAME3.CHILD $FRAME3 \ orientation:HORIZONTAL \ numColumns:1 \ packing:PACK_NONE ################# LISTE DE VALEURS ################ XUlist LISTE ${FRAME3.CHILD} \ listMarginWidth:25 \ itemCount:5 \ items:"bleu,blanc,rouge,vert,noir" \ visibleItemCount:3 \ selectionPolicy:SINGLE_SELECT \ singleSelectionCallback:GererListe XtManageChild $LISTE XUpushbutton BOUTON_DE_COULEUR ${FRAME3.CHILD} \ x:125 y:15 ############################################# XtManageChild $FRAME3 ################# ZONE DE DESSIN ################ XUdrawingarea ZONE_DE_DESSIN $FORM \ width:100 \ height:300 \ background:SkyBlue \ $(XUattach under $FRAME2 10 right 10) XtManageChild $ZONE_DE_DESSIN ############################################# ####### CREATION DE LA NOUVELLE FRAME : MENU DEROULANT ####### XUframe FRAME4 $FORM \ $(XUattach under $FRAME3 10 left 10 ) XUlabel FRAME4.TITLE $FRAME4 \ labelString:$'XmCreatePulldownMenu' \ childType:FRAME_TITLE_CHILD \ childVerticalAlignment:ALIGNMENT_BASELINE_TOP XUrowcolumn FRAME4.CHILD $FRAME4 \ orientation:HORIZONTAL \ numColumns:1 ################# MENU DEROULANT ################ XUpulldownmenu -u pulling $FORM XUoptionmenu -u ELEMENTS "${FRAME4.CHILD}" \ labelString:"OptionMenu" \ menuHistory:$CHOIX2 \ subMenuId:$pulling XUaddbuttons $pulling \ CHOIX1 "Carre" "GererPanneau carre" \ CHOIX2 "Triangle" "GererPanneau triangle" \ CHOIX3 "Cercle" "GererPanneau cercle" XtManageChildren $ELEMENTS ############################################# XtManageChild $FRAME4 ################################################################## ####### CREATION DE LA NOUVELLE FRAME : BOITE A COCHER ####### XUframe FRAME5 $FORM \ $(XUattach under $FRAME4 10 left 10 ) XUlabel FRAME5.TITLE $FRAME5 \ labelString:$'XmToggleButtonGadget' \ childType:FRAME_TITLE_CHILD \ childVerticalAlignment:ALIGNMENT_BASELINE_TOP XUrowcolumn FRAME5.CHILD $FRAME5 \ orientation:HORIZONTAL \ numColumns:1 ################# BOITE A COCHER ################## XUtogglebuttongadget TOG1 ${FRAME5.CHILD} \ labelString:"<= Cocher ici" ############################################# ################# CALLBACK ################## XtAddCallback $TOG1 armCallback "GererToggle" ############################################# XtManageChild $FRAME5 ########################################################################## ####### CREATION DE LA NOUVELLE FRAME : RADIO BOX ####### XUframe FRAME6 $FORM \ $(XUattach under $FRAME5 10 left 10 ) XUlabel FRAME6.TITLE $FRAME6 \ labelString:$'XmCreateRadioBox' \ childType:FRAME_TITLE_CHILD \ childVerticalAlignment:ALIGNMENT_BASELINE_TOP XUrowcolumn FRAME6.CHILD $FRAME6 \ orientation:HORIZONTAL ################# LES RADIO BOX ################## ##XUrowcolumn ROW_RADIO_BUTTONS ${FRAME6.CHILD} XUradiobox RADIO ${FRAME6.CHILD} XUaddtogglebuttons $RADIO \ RADIO1 "OuieFM" Z : \ RADIO2 "Europe2" Z : \ RADIO3 "FunRadio" Z : XUtogglebuttonsetstate $RADIO1 true XtManageChild $RADIO ############################################# # ZONE DE TEXTE POUR LE PLAISIR XUrowcolumn ROW_RESULTAT ${FRAME6.CHILD} \ packing:PACK_NONE XUlabel LABEL3 $ROW_RESULTAT \ labelString:"Vous ecoutez:" \ x:10 y:20 XUtext TEXTE_RADIO $ROW_RESULTAT \ value:"Ouie FM" \ columns:15 \ x:10 y:45 ################# CALLBACK ################## XtAddCallback $RADIO1 armCallback "XmTextSetString $TEXTE_RADIO \"Ouie FM\"" XtAddCallback $RADIO2 armCallback "XmTextSetString $TEXTE_RADIO \"Europe 2\"" XtAddCallback $RADIO3 armCallback "XmTextSetString $TEXTE_RADIO \"Fun Radio\"" ############################################# XtManageChild $FRAME6 ####### CREATION DE LA NOUVELLE FRAME : SPIN BOX ####### XUframe FRAME7 $FORM \ $(XUattach under $FRAME6 10 left 10 ) XUlabel FRAME7.TITLE $FRAME7 \ labelString:$'XmCreateArrowButton' \ childType:FRAME_TITLE_CHILD \ childVerticalAlignment:ALIGNMENT_BASELINE_TOP XUrowcolumn FRAME7.CHILD $FRAME7 \ orientation:HORIZONTAL ################# LA ROULETTE ################## XUrowcolumn ROW_ARROWS ${FRAME7.CHILD} XUarrowbutton FLECHE_HAUT ${ROW_ARROWS} \ arrowDirection:ARROW_UP XUarrowbutton FLECHE_BAS ${ROW_ARROWS} \ arrowDirection:ARROW_DOWN XUrowcolumn ROW_TEXTE ${FRAME7.CHILD} \ packing:PACK_NONE XUtext TEXTE_ROULETTE ${ROW_TEXTE} \ value:"0" \ columns:10 \ x:10 y:12 ############################################# ################# CALLBACKs ################## XtAddCallback $FLECHE_HAUT activateCallback "Fleches increment" XtAddCallback $FLECHE_BAS activateCallback "Fleches decrement" ############################################# XtManageChild $FRAME7 ################# UNE ZONE DE TEXTE ################## XUscrolledtext ZONE_DE_TEXTE $FORM \ columns:65 \ rows:5 \ editMode:MULTI_LINE_EDIT \ value:"`cat /var/adm/messages`" \ $(XUattach under $FRAME7 15 left 10 ) XtManageChild $ZONE_DE_TEXTE ############################################# ################# CALLBACK ################## #XtAddCallback $MENU_OPTION Callback GererListe ############################################# ################# SEPARATEUR ################ XUseparatorgadget SEP $FORM \ separatorType:SHADOW_ETCHED_OUT \ $(XUattach under $ZONE_DE_TEXTE 10 leftpos 0 rightpos 100 ) ############################################# ################# BOUTON ################## XUpushbutton Ok $FORM \ $(XUattach under $SEP 10 leftpos 10 rightpos 40 bottom 10 ) ########################################### ################# CALLBACK ################## XtAddCallback $Ok activateCallback Bonjour ############################################# ################# BOUTON ################## XUpushbutton Quitter $FORM \ $(XUattach under $SEP 10 leftpos 60 rightpos 90 bottom 10 ) ########################################### ################# CALLBACK ################## XtAddCallback $Quitter activateCallback "exit 0" ############################################# XtRealizeWidget $TOPLEVEL XtMainLoop ############ FIN DE L'UI ################