home *** CD-ROM | disk | FTP | other *** search
- /*----------------------------------------------------------------------*
- km_handler.c Version 3.0 © Copyright 1990-91 Jaba Development
-
- Author : Jan van den Baard
- Purpose: handling of menu and keyboard events
- *----------------------------------------------------------------------*/
-
- extern struct Menu Titles[];
- extern struct Screen *MainScreen;
- extern struct Window *MainWindow;
- extern struct RastPort *MainRP;
- extern struct NewWindow nw_main;
- extern struct ge_prefs prefs;
- extern struct GadgetList Gadgets;
- extern USHORT FrontPen, BackPen, GadgetCount, BackFill;
- extern USHORT WDBackFill,LightSide,DarkSide;
- extern BOOL Saved, REQUESTER, WORKBENCH, WBSCREEN;
- extern UBYTE wbb[20];
-
- /*
- * quit if the anwser is yes
- */
- VOID quit()
- {
- BOOL Quit = FALSE;
-
- if(Saved == FALSE)
- { if(Ask("Your work isn't saved !","Quit anyway ?") == TRUE)
- Quit = TRUE;
- }
- else
- { if(Ask("Are you sure you","want to Quit ?") == TRUE)
- Quit = TRUE;
- }
- if(Quit == TRUE) close_up(NULL);
- }
-
- /*
- * handle the menu events (drag selections possible)
- */
- VOID handle_menus(menu_code)
- USHORT menu_code;
- {
- USHORT menu, item, sub, next_select;
- struct MenuItem *select, *ItemAddress();
-
- while(menu_code != MENUNULL)
- { select = ItemAddress(&Titles[0],menu_code);
- menu = MENUNUM(menu_code);
- item = ITEMNUM(menu_code);
- sub = SUBNUM(menu_code);
- switch(menu)
- { case 0: switch(item)
- { case 0: About();
- break;
- case 1: new();
- break;
- case 2: ReadBinGadgets(FALSE);
- break;
- case 3: WriteBinGadgets();
- break;
- case 4: switch(sub)
- { case 0: GenWhat(1);
- break;
- case 1: GenWhat(0);
- break;
- }
- break;
- case 5: preferences();
- break;
- case 6: if(WORKBENCH == TRUE)
- { if((WORKBENCH = (BOOL)OpenWorkBench()))
- { strcpy((char *)&wbb,"Close WorkBench");
- ScreenToFront(MainScreen);
- }
- else Error("Can't open WorkBench !");
- }
- else
- { if((WORKBENCH = CloseWorkBench()))
- strcpy((char *)&wbb,"Open WorkBench");
- else Error("Can't close WorkBench !");
- }
- break;
- case 7: quit();
- break;
- }
- break;
- case 1: switch(item)
- { case 0: move_gadget();
- break;
- case 1: size_gadget();
- break;
- case 2: copy_gadget();
- break;
- case 3: delete();
- break;
- case 4: edit();
- break;
- case 5: switch(sub)
- { case 0: add_text(0);
- break;
- case 1: modify(0);
- break;
- case 2: text_delete(0);
- break;
- case 3: move_text(0);
- break;
- }
- break;
- case 6: switch(sub)
- { case 0: render();
- break;
- case 1: sel_render();
- break;
- case 2: delete_images();
- break;
- case 3: image_bank(FALSE);
- break;
- }
- break;
- case 7: do_cmap();
- break;
- case 8: disable_window();
- SetPalette(10,20,MainScreen);
- enable_window();
- break;
- case 9: refresh();
- break;
- case 10: LightSide = FrontPen;
- DarkSide = BackPen;
- break;
- case 11: switch(sub)
- { case 0: if(REQUESTER == FALSE) set_flags();
- else { BackFill = BackPen; refresh(); }
- break;
- case 1: if(REQUESTER == FALSE) idcmp();
- else add_text(2);
- break;
- case 2: if(REQUESTER == FALSE) { WDBackFill = BackPen; refresh(); }
- else modify(2);
- break;
- case 3: if(REQUESTER == FALSE) add_text(1);
- else text_delete(2);
- break;
- case 4: if(REQUESTER == FALSE) modify(1);
- else move_text(2);
- break;
- case 5: text_delete(1);
- break;
- case 6: move_text(1);
- break;
- }
- break;
- case 12: if(TestBits((ULONG)prefs.flag_bits,GP_COORDS)) {
- Forbid();
- MainWindow->Flags &= ~REPORTMOUSE;
- Permit();
- SetWindowTitles(MainWindow,(char *)-1L,(char *)TITLE);
- }
- MenuEditing();
- if(TestBits((ULONG)prefs.flag_bits,GP_COORDS)) {
- Forbid();
- MainWindow->Flags |= REPORTMOUSE;
- set_coords();
- do_coords();
- Permit();
- }
- break;
- case 13: disable_window();
- buisy();
- SetLabels();
- ok();
- enable_window();
- break;
- }
- break;
- case 2: FrontPen = (USHORT)item; break;
- case 3: BackPen = (USHORT)item; break;
- default: break;
- }
- menu_code = select->NextSelect;
- }
- }
-
- /*
- * handle the keyboard events
- */
- VOID handle_keys(key_code,qualifier)
- USHORT key_code, qualifier;
- {
- if((key_code & IECODE_UP_PREFIX) != IECODE_UP_PREFIX)
- { switch(qualifier)
- { case IEQUALIFIER_RELATIVEMOUSE:
- case IEQUALIFIER_NUMERICPAD+IEQUALIFIER_RELATIVEMOUSE:
- case IEQUALIFIER_RELATIVEMOUSE+IEQUALIFIER_CAPSLOCK:
- case IEQUALIFIER_RELATIVEMOUSE+IEQUALIFIER_CAPSLOCK+IEQUALIFIER_NUMERICPAD:
- switch(key_code)
- { case F1: move_gadget();
- break;
- case F2: size_gadget();
- break;
- case F3: copy_gadget();
- break;
- case F4: delete();
- break;
- case F5: edit();
- break;
- case F6: add_text(0);
- break;
- case F7: render();
- break;
- case F8: sel_render();
- break;
- case F9: if(NOT WBSCREEN)
- do_cmap();
- break;
- case F10: if(NOT WBSCREEN) {
- disable_window();
- SetPalette(10,20,MainScreen);
- enable_window();
- }
- break;
- case HELP: refresh();
- break;
- case 0x42: image_bank(FALSE);
- break;
- case 0x5d: HardCopy();
- break;
- case 0x0d: DumpID();
- break;
- default: break;
- }
- break;
- }
- }
- }
-