diff --git a/src/app/core/platform/app_delegate.h b/src/app/core/platform/app_delegate.h index 7a09ade3..0f8f5f4b 100644 --- a/src/app/core/platform/app_delegate.h +++ b/src/app/core/platform/app_delegate.h @@ -40,7 +40,7 @@ extern "C" { #endif -void InitializeCocoa(); +void yaze_run_cocoa_app_delegate(const char *filename); #ifdef __cplusplus } // extern "C" diff --git a/src/app/core/platform/app_delegate.mm b/src/app/core/platform/app_delegate.mm index 491c4527..b94cc83e 100644 --- a/src/app/core/platform/app_delegate.mm +++ b/src/app/core/platform/app_delegate.mm @@ -40,19 +40,23 @@ NSMenuItem *fileMenuItem = [mainMenu itemWithTitle:@"File"]; if (!fileMenuItem) { NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"]; - fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" action:nil keyEquivalent:@""]; + fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" + action:nil + keyEquivalent:@""]; [fileMenuItem setSubmenu:fileMenu]; - NSMenuItem *openItem = [[NSMenuItem alloc] initWithTitle:@"Open" - action:@selector(openFileAction:) - keyEquivalent:@"o"]; + NSMenuItem *openItem = + [[NSMenuItem alloc] initWithTitle:@"Open" + action:@selector(openFileAction:) + keyEquivalent:@"o"]; [fileMenu addItem:openItem]; // Open Recent NSMenu *openRecentMenu = [[NSMenu alloc] initWithTitle:@"Open Recent"]; - NSMenuItem *openRecentMenuItem = [[NSMenuItem alloc] initWithTitle:@"Open Recent" - action:nil - keyEquivalent:@""]; + NSMenuItem *openRecentMenuItem = + [[NSMenuItem alloc] initWithTitle:@"Open Recent" + action:nil + keyEquivalent:@""]; [openRecentMenuItem setSubmenu:openRecentMenu]; [fileMenu addItem:openRecentMenuItem]; @@ -60,7 +64,9 @@ [fileMenu addItem:[NSMenuItem separatorItem]]; // Save - NSMenuItem *saveItem = [[NSMenuItem alloc] initWithTitle:@"Save" action:nil keyEquivalent:@"s"]; + NSMenuItem *saveItem = [[NSMenuItem alloc] initWithTitle:@"Save" + action:nil + keyEquivalent:@"s"]; [fileMenu addItem:saveItem]; // Separator @@ -74,9 +80,10 @@ [optionsMenuItem setSubmenu:optionsMenu]; // Flag checkmark field - NSMenuItem *flagItem = [[NSMenuItem alloc] initWithTitle:@"Flag" - action:@selector(toggleFlagAction:) - keyEquivalent:@""]; + NSMenuItem *flagItem = + [[NSMenuItem alloc] initWithTitle:@"Flag" + action:@selector(toggleFlagAction:) + keyEquivalent:@""]; [flagItem setTarget:self]; [flagItem setState:NSControlStateValueOff]; [optionsMenu addItem:flagItem]; @@ -88,26 +95,35 @@ NSMenuItem *editMenuItem = [mainMenu itemWithTitle:@"Edit"]; if (!editMenuItem) { NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"]; - editMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" action:nil keyEquivalent:@""]; + editMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" + action:nil + keyEquivalent:@""]; [editMenuItem setSubmenu:editMenu]; - NSMenuItem *undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo" action:nil keyEquivalent:@"z"]; + NSMenuItem *undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo" + action:nil + keyEquivalent:@"z"]; [editMenu addItem:undoItem]; - NSMenuItem *redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo" action:nil keyEquivalent:@"Z"]; + NSMenuItem *redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo" + action:nil + keyEquivalent:@"Z"]; [editMenu addItem:redoItem]; // Add a separator [editMenu addItem:[NSMenuItem separatorItem]]; - NSMenuItem *cutItem = [[NSMenuItem alloc] initWithTitle:@"Cut" - action:@selector(cutAction:) - keyEquivalent:@"x"]; + NSMenuItem *cutItem = + [[NSMenuItem alloc] initWithTitle:@"Cut" + action:@selector(cutAction:) + keyEquivalent:@"x"]; [editMenu addItem:cutItem]; - NSMenuItem *copyItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:nil keyEquivalent:@"c"]; + NSMenuItem *copyItem = [[NSMenuItem alloc] initWithTitle:@"Copy" + action:nil + keyEquivalent:@"c"]; [editMenu addItem:copyItem]; NSMenuItem *pasteItem = [[NSMenuItem alloc] initWithTitle:@"Paste" @@ -131,34 +147,40 @@ NSMenuItem *viewMenuItem = [mainMenu itemWithTitle:@"View"]; if (!viewMenuItem) { NSMenu *viewMenu = [[NSMenu alloc] initWithTitle:@"View"]; - viewMenuItem = [[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""]; + viewMenuItem = [[NSMenuItem alloc] initWithTitle:@"View" + action:nil + keyEquivalent:@""]; [viewMenuItem setSubmenu:viewMenu]; // Emulator view button - NSMenuItem *emulatorViewItem = [[NSMenuItem alloc] initWithTitle:@"Emulator View" - action:nil - keyEquivalent:@"1"]; + NSMenuItem *emulatorViewItem = + [[NSMenuItem alloc] initWithTitle:@"Emulator View" + action:nil + keyEquivalent:@"1"]; [viewMenu addItem:emulatorViewItem]; // Hex Editor View - NSMenuItem *hexEditorViewItem = [[NSMenuItem alloc] initWithTitle:@"Hex Editor View" - action:nil - keyEquivalent:@"2"]; + NSMenuItem *hexEditorViewItem = + [[NSMenuItem alloc] initWithTitle:@"Hex Editor View" + action:nil + keyEquivalent:@"2"]; [viewMenu addItem:hexEditorViewItem]; // Disassembly view button - NSMenuItem *disassemblyViewItem = [[NSMenuItem alloc] initWithTitle:@"Disassembly View" - action:nil - keyEquivalent:@"3"]; + NSMenuItem *disassemblyViewItem = + [[NSMenuItem alloc] initWithTitle:@"Disassembly View" + action:nil + keyEquivalent:@"3"]; [viewMenu addItem:disassemblyViewItem]; // Memory view button - NSMenuItem *memoryViewItem = [[NSMenuItem alloc] initWithTitle:@"Memory View" - action:nil - keyEquivalent:@"4"]; + NSMenuItem *memoryViewItem = + [[NSMenuItem alloc] initWithTitle:@"Memory View" + action:nil + keyEquivalent:@"4"]; [viewMenu addItem:memoryViewItem]; @@ -166,9 +188,10 @@ [viewMenu addItem:[NSMenuItem separatorItem]]; // Toggle fullscreen button - NSMenuItem *toggleFullscreenItem = [[NSMenuItem alloc] initWithTitle:@"Toggle Fullscreen" - action:nil - keyEquivalent:@"f"]; + NSMenuItem *toggleFullscreenItem = + [[NSMenuItem alloc] initWithTitle:@"Toggle Fullscreen" + action:nil + keyEquivalent:@"f"]; [viewMenu addItem:toggleFullscreenItem]; @@ -178,13 +201,16 @@ NSMenuItem *helpMenuItem = [mainMenu itemWithTitle:@"Help"]; if (!helpMenuItem) { NSMenu *helpMenu = [[NSMenu alloc] initWithTitle:@"Help"]; - helpMenuItem = [[NSMenuItem alloc] initWithTitle:@"Help" action:nil keyEquivalent:@""]; + helpMenuItem = [[NSMenuItem alloc] initWithTitle:@"Help" + action:nil + keyEquivalent:@""]; [helpMenuItem setSubmenu:helpMenu]; // URL to online documentation - NSMenuItem *documentationItem = [[NSMenuItem alloc] initWithTitle:@"Documentation" - action:nil - keyEquivalent:@"?"]; + NSMenuItem *documentationItem = + [[NSMenuItem alloc] initWithTitle:@"Documentation" + action:nil + keyEquivalent:@"?"]; [helpMenu addItem:documentationItem]; [mainMenu insertItem:helpMenuItem atIndex:4]; @@ -207,7 +233,8 @@ - (void)openFileAction:(id)sender { if (!yaze::app::SharedRom::shared_rom_ - ->LoadFromFile(yaze::app::core::FileDialogWrapper::ShowOpenFileDialog()) + ->LoadFromFile( + yaze::app::core::FileDialogWrapper::ShowOpenFileDialog()) .ok()) { NSAlert *alert = [[NSAlert alloc] init]; [alert setMessageText:@"Error"]; @@ -225,13 +252,26 @@ NSLog(@"Open Recent File action triggered"); } -extern "C" void InitializeCocoa() { +extern "C" void yaze_run_cocoa_app_delegate(const char *filename) { @autoreleasepool { AppDelegate *delegate = [[AppDelegate alloc] init]; [NSApplication sharedApplication]; [NSApp setDelegate:delegate]; [NSApp finishLaunching]; } + + yaze::app::core::Controller controller; + RETURN_VOID_IF_ERROR(controller.OnEntry(filename)); + while (controller.IsActive()) { + @autoreleasepool { + controller.OnInput(); + if (auto status = controller.OnLoad(); !status.ok()) { + break; + } + controller.DoRender(); + } + } + controller.OnExit(); } @end diff --git a/src/app/yaze.cc b/src/app/yaze.cc index 28ab07f6..80f827f5 100644 --- a/src/app/yaze.cc +++ b/src/app/yaze.cc @@ -32,13 +32,14 @@ int main(int argc, char** argv) { rom_filename = argv[1]; } +#ifdef __APPLE__ + yaze_run_cocoa_app_delegate(rom_filename.c_str()); + return EXIT_SUCCESS; +#endif + core::Controller controller; EXIT_IF_ERROR(controller.OnEntry(rom_filename)) -#ifdef __APPLE__ - InitializeCocoa(); -#endif - while (controller.IsActive()) { controller.OnInput(); if (auto status = controller.OnLoad(); !status.ok()) { @@ -50,4 +51,4 @@ int main(int argc, char** argv) { controller.OnExit(); return EXIT_SUCCESS; -} \ No newline at end of file +}