home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / MIDICOM.LZH / MC_UTILS / MC_CONTR / MC_CONTR.C next >
C/C++ Source or Header  |  1993-10-18  |  5KB  |  271 lines

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