home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / MIDICOMT.LZH / SOURCEN / MC_CONTR / MC_CONTR.C next >
C/C++ Source or Header  |  1993-02-13  |  6KB  |  279 lines

  1. #include <portab.h>             /* Standard-Definitionen */
  2. #include <aes.h>            /* AES */
  3. #include <ext.h>            /* Timeraufrufe */
  4. #include <stddef.h>         /* Standard-Definitionen */
  5. #include <tos.h>
  6. #include <cpxdata.h>         /* CPX-Datenstrukturen */
  7. #include <gemst2.h>
  8. #include <mc_types.h>
  9.  
  10. #include "mccontr.h"
  11. #include "mccontr.c"
  12.  
  13. #define WM_CLOSE 22
  14. #define AC_CLOSE 41
  15.  
  16. static    boolean    color;
  17.  
  18. void init_dia(OBJECT *tree)
  19. {
  20.     int     i,fo_cx,fo_cy,fo_cw,fo_ch;
  21.  
  22.     for (i = 0; i < rs_numobs; i++)
  23.         rsrc_obfix(tree,i); 
  24.  
  25.     i=form_center(tree,&fo_cx,&fo_cy,&fo_cw,&fo_ch );
  26. }
  27.  
  28. void p_to_cstring(char *pstring,char *cstring)
  29. {
  30. int i,plen;
  31.  
  32.  plen=(int) pstring[0];
  33.  for (i=1;i<=plen;i++) cstring[i-1]=pstring[i];
  34.  for (i=plen+1;i<=8;i++) cstring[i-1]=' ';
  35. }
  36.  
  37. void name_buttons(int index,char *name)
  38. {
  39.  char  *hlp;
  40.  
  41.     switch(color)    {
  42.     case TRUE:{
  43.                          switch(index)
  44.                          {
  45.                           case R1: hlp=string_58;break;
  46.                           case R2: hlp=string_59;break;
  47.                           case R3: hlp=string_60;break;
  48.                           case R4: hlp=string_61;break;
  49.                           case R5: hlp=string_62;break;
  50.                           case R6: hlp=string_63;break;
  51.                           default: hlp=string_57;
  52.                             }
  53.                      };break;
  54.                         
  55.     case FALSE:{
  56.                             switch(index)
  57.                              {
  58.                               case R1: hlp=string_25;break;
  59.                               case R2: hlp=string_26;break;
  60.                               case R3: hlp=string_27;break;
  61.                               case R4: hlp=string_28;break;
  62.                               case R5: hlp=string_29;break;
  63.                               case R6: hlp=string_30;break;
  64.                               default: hlp=string_24;
  65.                             }
  66.                          };break;
  67.     }
  68.  p_to_cstring(name,hlp);
  69. }
  70.  
  71. void init_buttons(OBJECT *tree,syspar sys,all_proc apc)
  72. {
  73.     int i,j;
  74.  
  75.     for (j=R0;j<=R6;j++) Disable(j);
  76.     i=sys->my_num;
  77.     j=0;
  78.     if (i==7)
  79.     {
  80.         name_buttons(R0,(*apc)[i].r_name);
  81.         Enable(R0);
  82.         if (sys->prconf & 1)
  83.         {
  84.             Select(R0);
  85.         }
  86.     }
  87.     else
  88.     {
  89.         do
  90.         {
  91.             if ((*apc)[i].status.bits.rtw==7)
  92.             {
  93.                 name_buttons(j+R0,(*apc)[i].r_name);
  94.                 Enable(j+R0);
  95.                 if (sys->prconf & (1<<j))
  96.               {
  97.                     Select(j+R0);
  98.                 }
  99.                  else
  100.                  {
  101.                     Deselect(j+R0);
  102.                  };
  103.                 j++;
  104.             };
  105.           if (i++==6) i=0;
  106.         }    while (i!=sys->my_num);
  107.     };
  108. }
  109.  
  110. void set_dialog(OBJECT *tree,    syspar    sys,all_proc    allprocs)
  111. {
  112.     struct time tim;
  113.     struct date date;
  114.  
  115.     init_buttons(tree,sys,allprocs);
  116.   gettime( &tim  );
  117.     getdate( &date );
  118.     switch(color)
  119.     {
  120.         case TRUE:    {
  121.                                         itoa(date.da_day,string_35,10);
  122.                                         itoa(date.da_mon,string_39,10);
  123.                                         itoa(date.da_year,string_43,10);
  124.                                         itoa(tim.ti_hour,string_47,10);
  125.                                         itoa(tim.ti_min,string_51,10);
  126.                                     };break;
  127.         case    FALSE:    {
  128.                                         itoa(date.da_day,string_2,10);
  129.                                         itoa(date.da_mon,string_6,10);
  130.                                         itoa(date.da_year,string_10,10);
  131.                                         itoa(tim.ti_hour,string_14,10);
  132.                                         itoa(tim.ti_min,string_18,10);
  133.                                     };break;
  134.     };
  135. }
  136.  
  137. void set_time(void)
  138. {
  139.     struct time tim;
  140.     struct date date;
  141.     switch(color)
  142.     {
  143.         case TRUE:    {
  144.                                         date.da_day=atoi(string_35);
  145.                                         date.da_mon=atoi(string_39);
  146.                                         date.da_year=atoi(string_43);
  147.                                         tim.ti_hour=atoi(string_47);
  148.                                         tim.ti_min=atoi(string_51);
  149.                                     };break;
  150.         case    FALSE:    {
  151.                                         date.da_day=atoi(string_2);
  152.                                         date.da_mon=atoi(string_6);
  153.                                         date.da_year=atoi(string_10);
  154.                                         tim.ti_hour=atoi(string_14);
  155.                                         tim.ti_min=atoi(string_18);
  156.                                     };break;
  157.     };
  158.     settime(&tim);
  159.     setdate(&date);
  160. }
  161.  
  162. void send_time(void)
  163. {
  164.     msg_typ     mc_msg;
  165.     
  166.     set_time();
  167.     mc_msg.what =     6007;
  168.     trap111(&mc_msg);
  169. }
  170.  
  171. void setPrnt(OBJECT *tree,syspar    sys)
  172. {
  173.     int erg=0;
  174.  
  175.     if (IsSelected(R0)) erg|=1;
  176.     if (IsSelected(R1)) erg|=2;
  177.     if (IsSelected(R2)) erg|=4;
  178.     if (IsSelected(R3)) erg|=8;
  179.     if (IsSelected(R4)) erg|=16;
  180.     if (IsSelected(R5)) erg|=32;
  181.     if (IsSelected(R6)) erg|=64;
  182.     sys->prconf=erg;
  183. }
  184.  
  185. void app_dialog(OBJECT *tree,    syspar    sys,all_proc    allprocs)
  186. {
  187.     int i;
  188.  
  189.     form_dial(FMD_START,tree[ROOT].ob_x,tree[ROOT].ob_y,
  190.             tree[ROOT].ob_width,tree[ROOT].ob_height,
  191.             tree[ROOT].ob_x,tree[ROOT].ob_y,
  192.             tree[ROOT].ob_width,tree[ROOT].ob_height);
  193.  
  194.     do
  195.     {
  196.         set_dialog(tree,sys,allprocs);
  197.  
  198.         objc_draw(tree,ROOT,MAX_DEPTH,0,0,0,0);
  199.  
  200.         i=form_do(tree,0);
  201.       SetNormal(i);
  202.  
  203.  
  204.         switch(i)
  205.         {
  206.             case    LOKAL: set_time();
  207.             case    GLOBAL:    send_time();
  208.             case    DOIT:    setPrnt(tree,sys);
  209.         }
  210.     } while (i!=XEXIT);
  211.  
  212.     form_dial(FMD_FINISH,tree[ROOT].ob_x,tree[ROOT].ob_y,
  213.         tree[ROOT].ob_width,tree[ROOT].ob_height,
  214.         tree[ROOT].ob_x,tree[ROOT].ob_y,
  215.         tree[ROOT].ob_width,tree[ROOT].ob_height);
  216. }
  217.  
  218.  
  219. void wait_loop(void)
  220. {    
  221.     syspar        sys;
  222.   all_proc    allprocs;
  223.     OBJECT         *tree;
  224.     WORD            msg[8];
  225.     
  226.     if (Getrez()>=2) 
  227.     {
  228.         tree=( OBJECT *)rs_trindex[ PRWAHL ];
  229.         rs_numobs = 28;
  230.         color            =    FALSE;
  231.     }
  232.     else
  233.     {
  234.         tree=( OBJECT *)rs_trindex[ PRWAHLC ];
  235.         rs_numobs = 28;
  236.         color            =    TRUE;
  237.     };
  238.     init_dia(tree);/* location and center */
  239.  
  240.     if (_app==0)            /* ACC    */
  241.     {
  242.         menu_register( gl_apid,"  MC_CONTR");
  243.         do
  244.        {
  245.             evnt_mesag(msg);
  246.       if (msg[0]==AC_OPEN)
  247.       {
  248.           if (get_mc_sys(&sys,&allprocs))
  249.           {
  250.                 app_dialog(tree,sys,allprocs);
  251.             }
  252.             else
  253.             {
  254.                 form_alert(1,string_66);
  255.             };
  256.         };
  257.        }while (1);
  258.     }
  259.     else
  260.     {
  261.         if (get_mc_sys(&sys,&allprocs))
  262.          {
  263.             app_dialog(tree,sys,allprocs);
  264.          }
  265.         else
  266.         {
  267.         form_alert(1,string_66);
  268.         };
  269.     };
  270. }
  271.  
  272.  
  273. int main( void )
  274. {
  275.     wait_loop();
  276.     return 0;
  277. }
  278.  
  279.