home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 514b.lha / GadgetED_v2.3 / Source / km_handler.c < prev    next >
C/C++ Source or Header  |  1991-06-08  |  8KB  |  201 lines

  1. /*----------------------------------------------------------------------*
  2.   km_handler.c Version 2.3  © Copyright 1990-91 Jaba Development
  3.  
  4.   Author : Jan van den Baard
  5.   Purpose: handling of menu and keyboard events
  6.  *----------------------------------------------------------------------*/
  7.  
  8. extern struct Menu        Titles[];
  9. extern struct Screen     *MainScreen;
  10. extern struct Window     *MainWindow;
  11. extern struct RastPort   *MainRP;
  12. extern struct GadgetList  Gadgets;
  13. extern USHORT             FrontPen, BackPen, GadgetCount, BackFill;
  14. extern USHORT             WDBackFill,LightSide,DarkSide;
  15. extern BOOL               Saved, REQUESTER, WORKBENCH, WBSCREEN;
  16. extern UBYTE              wbb[20];
  17.  
  18. /*
  19.  * quit if the anwser is yes
  20.  */
  21. VOID quit()
  22. {
  23.     BOOL Quit = FALSE;
  24.  
  25.     if(Saved == FALSE)
  26.     {   if(Ask("Your work isn't saved !","Quit anyway ?") == TRUE)
  27.             Quit = TRUE;
  28.     }
  29.     else
  30.     {   if(Ask("Are you sure you","want to Quit ?") == TRUE)
  31.             Quit = TRUE;
  32.     }
  33.     if(Quit == TRUE) close_up(NULL);
  34. }
  35.  
  36. /*
  37.  * handle the menu events (drag selections possible)
  38.  */
  39. VOID handle_menus(menu_code)
  40.     USHORT menu_code;
  41. {
  42.     USHORT menu, item, sub, next_select;
  43.     struct MenuItem *select, *ItemAddress();
  44.  
  45.     while(menu_code != MENUNULL)
  46.     {   select = ItemAddress(&Titles[0],menu_code);
  47.         menu = MENUNUM(menu_code);
  48.         item = ITEMNUM(menu_code);
  49.         sub  = SUBNUM(menu_code);
  50.         switch(menu)
  51.         {   case 0: switch(item)
  52.                     {   case 0: About();
  53.                                 break;
  54.                         case 1: new();
  55.                                 break;
  56.                         case 2: ReadBinGadgets(FALSE);
  57.                                 break;
  58.                         case 3: WriteBinGadgets();
  59.                                 break;
  60.                         case 4: switch(sub)
  61.                                 {   case 0: WriteCGadgets();
  62.                                             break;
  63.                                     case 1: WriteAsmGadgets();
  64.                                             break;
  65.                                 }
  66.                                 break;
  67.                         case 5: preferences();
  68.                                 break;
  69.                         case 6: if(WORKBENCH == TRUE)
  70.                                 { if((WORKBENCH = (BOOL)OpenWorkBench()))
  71.                                   {   strcpy((char *)&wbb,"Close WorkBench");
  72.                                       ScreenToFront(MainScreen);
  73.                                   }
  74.                                   else Error("Can't open WorkBench !");
  75.                                 }
  76.                                 else
  77.                                 {   if((WORKBENCH = CloseWorkBench()))
  78.                                         strcpy((char *)&wbb,"Open WorkBench");
  79.                                     else Error("Can't close WorkBench !");
  80.                                 }
  81.                                 break;
  82.                         case 7: quit();
  83.                         break;
  84.                     break;
  85.                     }
  86.             break;
  87.             case 1: switch(item)
  88.                     {   case 0: move_gadget();
  89.                                 break;
  90.                         case 1: size_gadget();
  91.                                 break;
  92.                         case 2: copy_gadget();
  93.                                 break;
  94.                         case 3: delete();
  95.                                 break;
  96.                         case 4: edit();
  97.                                 break;
  98.                         case 5: switch(sub)
  99.                                 {   case 0: add_text(0);
  100.                                             break;
  101.                                     case 1: modify(0);
  102.                                             break;
  103.                                     case 2: text_delete(0);
  104.                                             break;
  105.                                     case 3: move_text(0);
  106.                                             break;
  107.                                 }
  108.                                 break;
  109.                         case 6: switch(sub)
  110.                                 {   case 0: render();
  111.                                             break;
  112.                                     case 1: sel_render();
  113.                                             break;
  114.                                     case 2: delete_images();
  115.                                             break;
  116.                                 }
  117.                                 break;
  118.                         case 7: do_cmap();
  119.                                 break;
  120.                         case 8: disable_window();
  121.                                 SetPalette(10,20,MainScreen);
  122.                                 enable_window();
  123.                                 break;
  124.                         case 9: refresh();
  125.                                 break;
  126.                         case 10: LightSide = FrontPen;
  127.                                  DarkSide  = BackPen;
  128.                                  break;
  129.                         case 11: switch(sub)
  130.                                  { case 0: if(REQUESTER == FALSE) set_flags();
  131.                                            else { BackFill = BackPen; refresh(); }
  132.                                            break;
  133.                                    case 1: if(REQUESTER == FALSE) idcmp();
  134.                                            else add_text(2);
  135.                                            break;
  136.                                    case 2: if(REQUESTER == FALSE) { WDBackFill = BackPen; refresh(); }
  137.                                            else modify(2);
  138.                                            break;
  139.                                    case 3: if(REQUESTER == FALSE) add_text(1);
  140.                                            else text_delete(2);
  141.                                            break;
  142.                                    case 4: if(REQUESTER == FALSE) modify(1);
  143.                                            else move_text(2);
  144.                                            break;
  145.                                    case 5: text_delete(1);
  146.                                            break;
  147.                                    case 6: move_text(1);
  148.                                            break;
  149.                                   }
  150.                                   break;
  151.                     }
  152.                     break;
  153.             case 2: FrontPen = (USHORT)item; break;
  154.             case 3: BackPen  = (USHORT)item; break;
  155.             default: break;
  156.             }
  157.     menu_code = select->NextSelect;
  158.     }
  159. }
  160.  
  161. /*
  162.  * handle the keyboard events
  163.  */
  164. VOID handle_keys(key_code,qualifier)
  165.     USHORT key_code, qualifier;
  166. {
  167.     if((key_code & IECODE_UP_PREFIX) != IECODE_UP_PREFIX)
  168.     {   switch(qualifier)
  169.         {   case IEQUALIFIER_RELATIVEMOUSE:
  170.             case IEQUALIFIER_RELATIVEMOUSE+IEQUALIFIER_CAPSLOCK:
  171.             switch(key_code)
  172.             {   case F1:   move_gadget();
  173.                            break;
  174.                 case F2:   size_gadget();
  175.                            break;
  176.                 case F3:   copy_gadget();
  177.                            break;
  178.                 case F4:   delete();
  179.                            break;
  180.                 case F5:   edit();
  181.                            break;
  182.                 case F6:   add_text(0);
  183.                            break;
  184.                 case F7:   render();
  185.                            break;
  186.                 case F8:   sel_render();
  187.                            break;
  188.                 case F9:   do_cmap();
  189.                            break;
  190.                 case F10:  disable_window();
  191.                            SetPalette(10,20,MainScreen);
  192.                            enable_window();
  193.                            break;
  194.                 case HELP: refresh();
  195.                            break;
  196.             }
  197.             break;
  198.         }
  199.     }
  200. }
  201.