diff --git a/src/app/core/platform/app_delegate.h b/src/app/core/platform/app_delegate.h index 0f8f5f4b..159aa3d7 100644 --- a/src/app/core/platform/app_delegate.h +++ b/src/app/core/platform/app_delegate.h @@ -8,22 +8,25 @@ #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1 /* iOS in Xcode simulator */ +#import #import -#import +@interface AppDelegate : UIResponder +@property(strong, nonatomic) UIWindow *window; -@interface AppDelegate : UIResponder -@property (strong, nonatomic) UIWindow *window; - -@property UIDocumentPickerViewController *documentPicker; -@property (nonatomic, copy) void (^completionHandler)(NSString *selectedFile); -- (void)PresentDocumentPickerWithCompletionHandler:(void (^)(NSString *selectedFile))completionHandler; +@property UIDocumentPickerViewController *documentPicker; +@property(nonatomic, copy) void (^completionHandler)(NSString *selectedFile); +- (void)PresentDocumentPickerWithCompletionHandler: + (void (^)(NSString *selectedFile))completionHandler; // TODO: Setup a tab bar controller for multiple yaze instances -@property (nonatomic) UITabBarController *tabBarController; +@property(nonatomic) UITabBarController *tabBarController; // TODO: Setup a font picker for the text editor and display settings -@property (nonatomic) UIFontPickerViewController *fontPicker; +@property(nonatomic) UIFontPickerViewController *fontPicker; // TODO: Setup the pencil kit for drawing @property PKToolPicker *toolPicker; @@ -40,6 +43,14 @@ extern "C" { #endif +/** + * @brief Initialize the Cocoa application. + */ +void yaze_initialize_cocoa(); + +/** + * @brief Run the Cocoa application delegate. + */ void yaze_run_cocoa_app_delegate(const char *filename); #ifdef __cplusplus diff --git a/src/app/core/platform/app_delegate.mm b/src/app/core/platform/app_delegate.mm index b94cc83e..7a54f398 100644 --- a/src/app/core/platform/app_delegate.mm +++ b/src/app/core/platform/app_delegate.mm @@ -40,23 +40,19 @@ 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]; @@ -64,9 +60,7 @@ [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 @@ -80,10 +74,9 @@ [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]; @@ -95,35 +88,26 @@ 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" @@ -147,40 +131,34 @@ 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]; @@ -188,10 +166,9 @@ [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]; @@ -201,16 +178,13 @@ 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]; @@ -233,8 +207,7 @@ - (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"]; @@ -252,14 +225,17 @@ NSLog(@"Open Recent File action triggered"); } -extern "C" void yaze_run_cocoa_app_delegate(const char *filename) { +extern "C" void yaze_initialize_cococa() { @autoreleasepool { AppDelegate *delegate = [[AppDelegate alloc] init]; [NSApplication sharedApplication]; [NSApp setDelegate:delegate]; [NSApp finishLaunching]; } +} +extern "C" void yaze_run_cocoa_app_delegate(const char *filename) { + yaze_initialize_cococa(); yaze::app::core::Controller controller; RETURN_VOID_IF_ERROR(controller.OnEntry(filename)); while (controller.IsActive()) {