--- xmil/MacOSX/xmil.cpp 2004/08/10 14:38:56 1.1 +++ xmil/MacOSX/xmil.cpp 2004/08/14 05:41:05 1.4 @@ -60,7 +60,6 @@ static pascal OSErr handleQuitApp(const static void InitToolBox(void) { - FlushEvents(everyEvent, 0); InitCursor(); AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, @@ -69,37 +68,36 @@ static void InitToolBox(void) { static void MenuBarInit(void) { - Handle hdl; - MenuHandle hmenu; - - hdl = GetNewMBar(IDM_MAINMENU); - if (hdl == NULL) { - ExitToShell(); - } - SetMenuBar(hdl); - hmenu = GetMenuHandle(IDM_APPLE); - if (hmenu) { - AppendResMenu(hmenu, 'DRVR'); - } + OSStatus err; + IBNibRef nibRef; + + err = CreateNibReference(CFSTR("main"), &nibRef); + if (err != noErr) ExitToShell(); + err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar")); if (!xmiloscfg.Z80SAVE) { - hmenu = GetMenuHandle(IDM_OTHER); - if (hmenu) { - DeleteMenuItem(hmenu, 7); - } + DeleteMenuItem(GetMenuRef(IDM_OTHER), 7); } - hmenu = GetMenuHandle(IDM_FDD1); - SetItemCmd(hmenu, LoWord(IDM_FDD1OPEN), 'D'); - SetMenuItemModifiers(hmenu, LoWord(IDM_FDD1OPEN), kMenuShiftModifier); - SetItemCmd(hmenu, LoWord(IDM_FDD1EJECT), 'E'); - SetMenuItemModifiers(hmenu, LoWord(IDM_FDD1EJECT), kMenuShiftModifier); - EnableMenuItem(GetMenuHandle(IDM_DEVICE), LoWord(IDM_MOUSE)); + DisableAllMenuItems(GetMenuHandle(IDM_EDIT)); - DeleteMenu(IDM_FDD2); - DeleteMenu(IDM_FDD3); + if (!(xmilcfg.fddequip & (1 << 3))) { + DeleteMenu(IDM_FDD3); + } else { + ChangeMenuAttributes(GetMenuRef(IDM_FDD3), 0, kMenuAttrHidden); + } + if (!(xmilcfg.fddequip & (1 << 2))) { + DeleteMenu(IDM_FDD2); + } else { + ChangeMenuAttributes(GetMenuRef(IDM_FDD2), 0, kMenuAttrHidden); + } + if (!(xmilcfg.fddequip & (1 << 1))) { + DeleteMenu(IDM_FDD1); + } + if (!(xmilcfg.fddequip & (1 << 0))) { + DeleteMenu(IDM_FDD0); + } - DrawMenuBar(); } static void HandleMenuChoice(long wParam) { @@ -139,6 +137,7 @@ static void HandleMenuChoice(long wParam case IDM_FDD0EJECT: diskdrv_setfdd(0, NULL, 0); + //DisableMenuItem(GetMenuRef(IDM_FDD0), IDM_FDD0EJECT); break; case IDM_FDD1OPEN: @@ -147,6 +146,7 @@ static void HandleMenuChoice(long wParam case IDM_FDD1EJECT: diskdrv_setfdd(1, NULL, 0); + //DisableMenuItem(GetMenuRef(IDM_FDD1), IDM_FDD1EJECT); break; case IDM_FDD2OPEN: @@ -155,6 +155,7 @@ static void HandleMenuChoice(long wParam case IDM_FDD2EJECT: diskdrv_setfdd(2, NULL, 0); + //DisableMenuItem(GetMenuRef(IDM_FDD2), IDM_FDD2EJECT); break; case IDM_FDD3OPEN: @@ -163,6 +164,7 @@ static void HandleMenuChoice(long wParam case IDM_FDD3EJECT: diskdrv_setfdd(3, NULL, 0); + //DisableMenuItem(GetMenuRef(IDM_FDD3), IDM_FDD3EJECT); break; case IDM_TURBOZ: @@ -201,17 +203,11 @@ static void HandleMenuChoice(long wParam break; case IDM_WIDTH80: - crtc.s.TXT_XL = 80; -// crtc.s.GRP_XL = 640; - vrambank_patch(); - scrnallflash = 1; + crtc_forcesetwidth(80); break; case IDM_WIDTH40: - crtc.s.TXT_XL = 40; -// crtc.s.GRP_XL = 320; - vrambank_patch(); - scrnallflash = 1; + crtc_forcesetwidth(40); break; case IDM_DISPSYNC: @@ -286,11 +282,6 @@ static void HandleMenuChoice(long wParam update = SYS_UPDATECFG; break; - case IDM_8MHZ: - menu_setcpuspeed(xmilcfg.CPU8MHz ^ 1); - update = SYS_UPDATECFG; - break; - case IDM_SEEKSND: menu_setmotorflg(xmilcfg.MOTOR ^ 1); update = SYS_UPDATECFG; @@ -325,16 +316,12 @@ static void HandleMenuChoice(long wParam break; default: - if (HiWord(wParam) == IDM_APPLE) { - GetMenuItemText(GetMenuHandle(IDM_APPLE), - LoWord(wParam), applname); - } break; } sysmng_update(update); HiliteMenu(0); } - +#if 0 static void HandleUpdateEvent(EventRecord *pevent) { WindowPtr hWnd; @@ -349,7 +336,7 @@ static void HandleUpdateEvent(EventRecor } EndUpdate(hWnd); } - +#endif static void HandleMouseDown(EventRecord *pevent) { WindowPtr hWnd; @@ -364,13 +351,9 @@ static void HandleMouseDown(EventRecord soundmng_play(); } break; - - case inContent: - mousemng_buttonevent(MOUSEMNG_LEFTDOWN); - break; } } - +#if 0 static void eventproc(EventRecord *event) { int keycode; @@ -425,7 +408,7 @@ static void eventproc(EventRecord *event break; } } - +#endif #if 0 // ---- @@ -562,7 +545,6 @@ int main(int argc, char *argv[]) { menu_setkey(0); menu_setsound(xmilcfg.SOUND_SW); menu_setmouse(xmilcfg.MOUSE_SW); - menu_setcpuspeed(xmilcfg.CPU8MHz); menu_setmotorflg(xmilcfg.MOTOR); menu_setdispclk(xmiloscfg.DISPCLK); menu_setbtnmode(xmilcfg.BTN_MODE); @@ -714,10 +696,20 @@ int main(int argc, char *argv[]) { return(0); } - void wrapperMouseDown(EventRef event) { EventRecord eve; ConvertEventRefToEventRecord( event,&eve ); HandleMouseDown(&eve); } + +void wrapperKeyDown(EventRef event) { + EventRecord eve; + + ConvertEventRefToEventRecord( event,&eve ); + soundmng_stop(); + mousemng_disable(MOUSEPROC_MACUI); + HandleMenuChoice(MenuEvent(&eve)); + mousemng_enable(MOUSEPROC_MACUI); + soundmng_play(); +} \ No newline at end of file