home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / xfedor.zip / XFree86 / src / xfedor / tr_tabbord.c < prev    next >
C/C++ Source or Header  |  1999-03-02  |  7KB  |  273 lines

  1. /* Copyright 1989 GROUPE BULL -- See licence conditions in file COPYRIGHT */
  2. #include <stdio.h>
  3. #include "clientimage.h" /* pour fedor.h */
  4. #include "couche.h"     /* CURS2 */
  5. #include "sos.h"    /* SOS .. */
  6. #include "fedor.h"    /* fedchar */
  7.  
  8. extern root,nf_mono ;
  9. extern int FIN ;        /* depuis main.c */
  10.  
  11. extern fedchar cartrav ;        /* CarFen */
  12. extern int Xleft, Baseliney ;    
  13.  
  14. extern int nf_extrafont ;   /* depuis tr_save */
  15. extern int nf_save ;   /* depuis tr_save */
  16.  
  17. int Autom_tabbord();
  18. int Init_tabbord();
  19. void CarFen() ;
  20. void CarPoint() ;
  21.  
  22. int nf_tabbord ;   /* NUMERO DE LA FENETRE TABLEAU DE BORD */      
  23.  
  24.     /*--------- le reste est du LOCAL */
  25.  
  26. static int idmload,idbitmap,idmtest ;    /* id de popup */
  27. static char *choixtest[] = {"MOUSE","CHARS", "BITMAP", 0 } ;
  28. static char *choixload[] = {"FONT","EXTRA", 0 } ;
  29. static char *choixbitmap[] = {"LOAD MOUSE","SAVE MOUSE",
  30.                   "LOAD BITMAP","SAVE BITMAP",
  31.                   "LOAD PIXMAP","SAVE PIXMAP",0 } ;
  32.  
  33. static int zsos,zquit,ztest,zload,zsave,zbitmap,zcar ;
  34.             /* id des zones crees */     
  35. #include "tabbord.h"
  36.  
  37. #define XTAB (10 + 100+514+12 + 10 + 2)
  38. #define YTAB 10
  39.  
  40. #define XIC 900
  41. #define YIC 170 
  42. #define WIC 81
  43. #define HIC 100
  44.  
  45.  
  46. static int invert = 0 ;
  47.  
  48. static char mousename[50] ;
  49. static char bitmapname[50] ;
  50. static char pixmapname[50] ;
  51.  
  52.  
  53. /*----------------------------------------------------------*/
  54. int Init_tabbord(pixfile,mousefile,bitfile)
  55.      char * pixfile, * mousefile, * bitfile ;
  56. {
  57.      
  58.     nf_tabbord = w_ouvrir(nf_mono,XTAB, YTAB, WTAB, HTABB, 
  59.               "XFEDOR : Control",CURS2,
  60.               EnterZone|ButtonPressed|LeaveZone,WMON) ;
  61.     
  62.     zquit = w_crzon(nf_tabbord,0,0,WTABITEM,HTABITEM,CURS2);
  63.     zsos = w_crzon(nf_tabbord,WTABITEM,0,2*WTABITEM,HTABITEM,CURS2);
  64.     ztest = w_crzon(nf_tabbord,2*WTABITEM,0,WTAB,HTABITEM,CURS2);
  65.     zload = w_crzon(nf_tabbord,0,HTABITEM,WTABITEM,HTAB,CURS2);
  66.     zsave = w_crzon(nf_tabbord,WTABITEM,HTABITEM,2*WTABITEM,HTAB,CURS2);
  67.     zbitmap = w_crzon(nf_tabbord,2*WTABITEM,HTABITEM,WTAB,HTAB,CURS2);
  68.  
  69.     zcar = w_crzon(nf_tabbord,0,HTAB,WCAR,HTABB,CURS3);
  70.  
  71.     w_montrer(nf_tabbord) ; 
  72.      
  73.      /* creation des popups du tableau de bord */
  74.     idmtest = MenuCreat(choixtest);
  75.     idmload = MenuCreat(choixload);
  76.     idbitmap = MenuCreat(choixbitmap);
  77.      
  78.     strcpy(pixmapname,pixfile);
  79.     strcpy(mousename,mousefile);
  80.     strcpy(bitmapname,bitfile);
  81. }
  82.  
  83. static Reaffich(fen)
  84. int fen ;
  85. {
  86.      if (fen == nf_tabbord) {
  87.          w_line(nf_tabbord,0,HTABITEM,WTAB,HTABITEM,ON);
  88.          w_line(nf_tabbord,0,HTAB,WTAB,HTAB,ON);
  89.          w_line(nf_tabbord,WTABITEM,0,WTABITEM,HTAB,ON);
  90.          w_line(nf_tabbord,2*WTABITEM,0,2*WTABITEM,HTAB,ON);
  91.  
  92.      w_centrer(nf_tabbord,"QUIT",0,0,WTABITEM,HTABITEM);
  93.      w_centrer(nf_tabbord,"SOS",WTABITEM,0,2*WTABITEM,HTABITEM);
  94.      w_centrer(nf_tabbord,"TEST",2*WTABITEM,0,WTAB,HTABITEM);
  95.      w_centrer(nf_tabbord,"LOAD",0,HTABITEM,WTABITEM,HTAB);
  96.      w_centrer(nf_tabbord,"SAVE",WTABITEM,HTABITEM,2*WTABITEM,HTAB);
  97.      w_centrer(nf_tabbord,"BITMAP",2*WTABITEM,HTABITEM,WTAB,HTAB);
  98.  
  99.      CarFen() ;
  100.      } 
  101. }
  102.  
  103. void CarFen()
  104. {
  105.     w_bitblt(nf_tabbord,cartrav.image,
  106.             0,0,128,128,1,HTAB+2) ;
  107. }
  108.  
  109. void Carpoint(x,y,color)
  110.     int x,y ;
  111.     int color ;
  112. {
  113.        w_point(nf_tabbord,x+1,HTAB+1+y+1,color) ;
  114. }
  115.  
  116. static void InvertCar()
  117. {
  118.     invert = (invert==0)?1:0 ;
  119.     w_inv(nf_tabbord,1,HTAB+2,WCAR-1,HTABB) ;
  120. }
  121.  
  122. static int Inverser_zone(zone)
  123.     int zone;
  124. {
  125.     if (zone==zquit) 
  126.         w_inv(nf_tabbord,3,3,WTABITEM-3,HTABITEM-3);  else
  127.     if (zone==zsos ) 
  128.         w_inv(nf_tabbord,WTABITEM+3,3,2*WTABITEM-3,HTABITEM-3); else
  129.     if (zone== ztest) 
  130.         w_inv(nf_tabbord,2*WTABITEM+3,3,WTAB-3,HTABITEM-3); else
  131.     if (zone== zload ) 
  132.         w_inv(nf_tabbord,3,HTABITEM+3,WTABITEM-3,HTAB-3); else
  133.     if (zone== zsave)
  134.         w_inv(nf_tabbord,WTABITEM+3,HTABITEM+3,2*WTABITEM-3,HTAB-3); else
  135.     if (zone== zbitmap)
  136.         w_inv(nf_tabbord,2*WTABITEM+3,HTABITEM+3,WTAB-3,HTAB-3); 
  137.             
  138. }
  139.     
  140.  
  141. static int Load()
  142. {
  143.      char name[50];
  144.      int rep ;
  145.  
  146.     rep = MenuPop(idmload,choixload) ;
  147.     if (w_nosaveunder()) Reaffich(nf_tabbord) ;        /* HACK */
  148.     name[0] = '\0' ;   /* pour gd_lirechaine ++ */
  149.     switch(rep) {
  150.        case 0 : 
  151.         gd_lirechaine("Filename ?",name);
  152.         rep = GetFont(name) ;
  153.         if (rep<0) gd_envoyermsg("CAN'T READ FONT FILE");
  154.         break ;
  155.        case 1 :
  156.         gd_lirechaine("Filename ?",name);
  157.         rep = GetExtraFont(name) ;
  158.         if (rep == 0) w_cacher(nf_extrafont);
  159.         if (rep > 0) w_montrer(nf_extrafont); else
  160.         if (rep < 0) gd_envoyermsg("CAN'T READ FONT FILE");
  161.         break ;
  162.        default : break ;
  163.     }
  164. }
  165.  
  166. static int MenuTest()
  167. {
  168.      int rep ;
  169.  
  170.     rep = MenuPop(idmtest,choixtest) ;
  171.     switch(rep) {
  172.        case 0 : 
  173.                 Test(1) ;           /* equiv a click == 1 */
  174.         break ;
  175.        case 1 :
  176.                 Test(2) ;           /* equiv a click == 2 */
  177.         break ;
  178.        case 2 :
  179.                 w_setroot(cartrav.image,
  180.               Xleft,Baseliney+cartrav.up,
  181.               cartrav.hsize,cartrav.down-cartrav.up);
  182.               /* equiv a xsetroot -bitmap */
  183.         break ;
  184.        default : break ;
  185.     }
  186. }
  187.  
  188. static int Bitmap()
  189. {     
  190.   int rep ;
  191.  
  192.     rep = MenuPop(idbitmap,choixbitmap) ;
  193.     if (w_nosaveunder()) Reaffich(nf_tabbord);    /* HACK */
  194.     switch(rep) {
  195.        case 0 :
  196.         gd_lirechaine("File (Fore+Mask) ?",mousename);
  197.         if (LoadBitmap(mousename,1) != 1)
  198.           gd_envoyermsg("CAN'T READ THE MOUSE FILES ");
  199.         else  MontrerCarTrav();
  200.         break ;
  201.        case 1 :
  202.         gd_lirechaine("File (Fore+Mask) ?",mousename);
  203.         SaveBitmap(mousename,1);
  204.         break ;
  205.        case 2 :
  206.         gd_lirechaine("BitmapFile ?",bitmapname);
  207.         if (LoadBitmap(bitmapname,0) != 1) 
  208.           gd_envoyermsg("CAN'T READ THE BITMAP FILE ");
  209.         else  MontrerCarTrav();
  210.         break ;
  211.        case 3 :
  212.         gd_lirechaine("BitmapFile ?",bitmapname);
  213.         SaveBitmap(bitmapname,0);
  214.         break ;
  215.        case 4 :
  216.         gd_lirechaine("PixmapFile ?",pixmapname);
  217.         if (LoadBitmap(pixmapname,2) != 1)
  218.           gd_envoyermsg("CAN'T READ THE PIXMAP FILE ");
  219.         else MontrerCarTrav();
  220.         break ;
  221.        case 5 :
  222.         gd_lirechaine("PixmapFile ?",pixmapname);
  223.         SaveBitmap(pixmapname,2);
  224.         break ;
  225.        default : break ;
  226.     }
  227. }
  228.  
  229.  
  230. int Autom_tabbord(pev)
  231.     myEvent * pev ;
  232. {
  233.     static zonecour = 0 ;
  234.    switch(pev->type){
  235.     case Exposure : 
  236.         Reaffich(pev->window) ;
  237.         if (zonecour) Inverser_zone(zonecour);
  238.         break ;
  239.     case EnterZone   : 
  240.                 if (pev->zone==zcar) Afficher_boutons("Invert","Invert") ; else
  241.             Afficher_boutons("Select","Select");
  242.         Inverser_zone(pev->zone);
  243.         zonecour = pev->zone ;
  244.         break;   
  245.     case ButtonPressed :  
  246.         if (pev->zone==zsos) Helping(SOS); else
  247.         if (pev->zone==zquit) {
  248.            if (gd_confirm()) {
  249.           FIN = 1 ;
  250.            }
  251.         } else 
  252.         if (pev->zone==ztest) MenuTest(); else
  253.         if (pev->zone==zload)  Load(); else
  254.              if (pev->zone==zbitmap) Bitmap(); else
  255.           if (pev->zone==zsave)  {
  256.           w_cacher(nf_save);
  257.           w_montrer(nf_save);
  258.         } else
  259.         if (pev->zone==zcar)  InvertCar();
  260.             break ;
  261.        case LeaveZone : 
  262.         Inverser_zone(pev->zone); 
  263.         zonecour = 0 ;
  264.         if ((pev->zone == zcar) && invert)
  265.             InvertCar() ;
  266.         Afficher_boutons("","") ; 
  267.         break ;
  268.     case CloseWindow : break ;                
  269.    }
  270.  }
  271.  
  272.  
  273.