Refactor AppDelegate header and implementation for improved readability and organization

This commit is contained in:
scawful
2024-11-15 23:50:58 -05:00
parent ced92320db
commit 89774ddab4
2 changed files with 63 additions and 76 deletions

View File

@@ -8,16 +8,19 @@
#if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1 #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1
/* iOS in Xcode simulator */ /* iOS in Xcode simulator */
#import <PencilKit/PencilKit.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <PencilKit/PencilKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate,
UIDocumentPickerDelegate,
@interface AppDelegate : UIResponder <UIApplicationDelegate, UIDocumentPickerDelegate, UITabBarControllerDelegate, PKCanvasViewDelegate> UITabBarControllerDelegate,
PKCanvasViewDelegate>
@property(strong, nonatomic) UIWindow *window; @property(strong, nonatomic) UIWindow *window;
@property UIDocumentPickerViewController *documentPicker; @property UIDocumentPickerViewController *documentPicker;
@property(nonatomic, copy) void (^completionHandler)(NSString *selectedFile); @property(nonatomic, copy) void (^completionHandler)(NSString *selectedFile);
- (void)PresentDocumentPickerWithCompletionHandler:(void (^)(NSString *selectedFile))completionHandler; - (void)PresentDocumentPickerWithCompletionHandler:
(void (^)(NSString *selectedFile))completionHandler;
// TODO: Setup a tab bar controller for multiple yaze instances // TODO: Setup a tab bar controller for multiple yaze instances
@property(nonatomic) UITabBarController *tabBarController; @property(nonatomic) UITabBarController *tabBarController;
@@ -40,6 +43,14 @@
extern "C" { extern "C" {
#endif #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); void yaze_run_cocoa_app_delegate(const char *filename);
#ifdef __cplusplus #ifdef __cplusplus

View File

@@ -40,21 +40,17 @@
NSMenuItem *fileMenuItem = [mainMenu itemWithTitle:@"File"]; NSMenuItem *fileMenuItem = [mainMenu itemWithTitle:@"File"];
if (!fileMenuItem) { if (!fileMenuItem) {
NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"]; NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" action:nil keyEquivalent:@""];
action:nil
keyEquivalent:@""];
[fileMenuItem setSubmenu:fileMenu]; [fileMenuItem setSubmenu:fileMenu];
NSMenuItem *openItem = NSMenuItem *openItem = [[NSMenuItem alloc] initWithTitle:@"Open"
[[NSMenuItem alloc] initWithTitle:@"Open"
action:@selector(openFileAction:) action:@selector(openFileAction:)
keyEquivalent:@"o"]; keyEquivalent:@"o"];
[fileMenu addItem:openItem]; [fileMenu addItem:openItem];
// Open Recent // Open Recent
NSMenu *openRecentMenu = [[NSMenu alloc] initWithTitle:@"Open Recent"]; NSMenu *openRecentMenu = [[NSMenu alloc] initWithTitle:@"Open Recent"];
NSMenuItem *openRecentMenuItem = NSMenuItem *openRecentMenuItem = [[NSMenuItem alloc] initWithTitle:@"Open Recent"
[[NSMenuItem alloc] initWithTitle:@"Open Recent"
action:nil action:nil
keyEquivalent:@""]; keyEquivalent:@""];
[openRecentMenuItem setSubmenu:openRecentMenu]; [openRecentMenuItem setSubmenu:openRecentMenu];
@@ -64,9 +60,7 @@
[fileMenu addItem:[NSMenuItem separatorItem]]; [fileMenu addItem:[NSMenuItem separatorItem]];
// Save // Save
NSMenuItem *saveItem = [[NSMenuItem alloc] initWithTitle:@"Save" NSMenuItem *saveItem = [[NSMenuItem alloc] initWithTitle:@"Save" action:nil keyEquivalent:@"s"];
action:nil
keyEquivalent:@"s"];
[fileMenu addItem:saveItem]; [fileMenu addItem:saveItem];
// Separator // Separator
@@ -80,8 +74,7 @@
[optionsMenuItem setSubmenu:optionsMenu]; [optionsMenuItem setSubmenu:optionsMenu];
// Flag checkmark field // Flag checkmark field
NSMenuItem *flagItem = NSMenuItem *flagItem = [[NSMenuItem alloc] initWithTitle:@"Flag"
[[NSMenuItem alloc] initWithTitle:@"Flag"
action:@selector(toggleFlagAction:) action:@selector(toggleFlagAction:)
keyEquivalent:@""]; keyEquivalent:@""];
[flagItem setTarget:self]; [flagItem setTarget:self];
@@ -95,35 +88,26 @@
NSMenuItem *editMenuItem = [mainMenu itemWithTitle:@"Edit"]; NSMenuItem *editMenuItem = [mainMenu itemWithTitle:@"Edit"];
if (!editMenuItem) { if (!editMenuItem) {
NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"]; NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"];
editMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" editMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" action:nil keyEquivalent:@""];
action:nil
keyEquivalent:@""];
[editMenuItem setSubmenu:editMenu]; [editMenuItem setSubmenu:editMenu];
NSMenuItem *undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo" NSMenuItem *undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo" action:nil keyEquivalent:@"z"];
action:nil
keyEquivalent:@"z"];
[editMenu addItem:undoItem]; [editMenu addItem:undoItem];
NSMenuItem *redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo" NSMenuItem *redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo" action:nil keyEquivalent:@"Z"];
action:nil
keyEquivalent:@"Z"];
[editMenu addItem:redoItem]; [editMenu addItem:redoItem];
// Add a separator // Add a separator
[editMenu addItem:[NSMenuItem separatorItem]]; [editMenu addItem:[NSMenuItem separatorItem]];
NSMenuItem *cutItem = NSMenuItem *cutItem = [[NSMenuItem alloc] initWithTitle:@"Cut"
[[NSMenuItem alloc] initWithTitle:@"Cut"
action:@selector(cutAction:) action:@selector(cutAction:)
keyEquivalent:@"x"]; keyEquivalent:@"x"];
[editMenu addItem:cutItem]; [editMenu addItem:cutItem];
NSMenuItem *copyItem = [[NSMenuItem alloc] initWithTitle:@"Copy" NSMenuItem *copyItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:nil keyEquivalent:@"c"];
action:nil
keyEquivalent:@"c"];
[editMenu addItem:copyItem]; [editMenu addItem:copyItem];
NSMenuItem *pasteItem = [[NSMenuItem alloc] initWithTitle:@"Paste" NSMenuItem *pasteItem = [[NSMenuItem alloc] initWithTitle:@"Paste"
@@ -147,38 +131,32 @@
NSMenuItem *viewMenuItem = [mainMenu itemWithTitle:@"View"]; NSMenuItem *viewMenuItem = [mainMenu itemWithTitle:@"View"];
if (!viewMenuItem) { if (!viewMenuItem) {
NSMenu *viewMenu = [[NSMenu alloc] initWithTitle:@"View"]; NSMenu *viewMenu = [[NSMenu alloc] initWithTitle:@"View"];
viewMenuItem = [[NSMenuItem alloc] initWithTitle:@"View" viewMenuItem = [[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""];
action:nil
keyEquivalent:@""];
[viewMenuItem setSubmenu:viewMenu]; [viewMenuItem setSubmenu:viewMenu];
// Emulator view button // Emulator view button
NSMenuItem *emulatorViewItem = NSMenuItem *emulatorViewItem = [[NSMenuItem alloc] initWithTitle:@"Emulator View"
[[NSMenuItem alloc] initWithTitle:@"Emulator View"
action:nil action:nil
keyEquivalent:@"1"]; keyEquivalent:@"1"];
[viewMenu addItem:emulatorViewItem]; [viewMenu addItem:emulatorViewItem];
// Hex Editor View // Hex Editor View
NSMenuItem *hexEditorViewItem = NSMenuItem *hexEditorViewItem = [[NSMenuItem alloc] initWithTitle:@"Hex Editor View"
[[NSMenuItem alloc] initWithTitle:@"Hex Editor View"
action:nil action:nil
keyEquivalent:@"2"]; keyEquivalent:@"2"];
[viewMenu addItem:hexEditorViewItem]; [viewMenu addItem:hexEditorViewItem];
// Disassembly view button // Disassembly view button
NSMenuItem *disassemblyViewItem = NSMenuItem *disassemblyViewItem = [[NSMenuItem alloc] initWithTitle:@"Disassembly View"
[[NSMenuItem alloc] initWithTitle:@"Disassembly View"
action:nil action:nil
keyEquivalent:@"3"]; keyEquivalent:@"3"];
[viewMenu addItem:disassemblyViewItem]; [viewMenu addItem:disassemblyViewItem];
// Memory view button // Memory view button
NSMenuItem *memoryViewItem = NSMenuItem *memoryViewItem = [[NSMenuItem alloc] initWithTitle:@"Memory View"
[[NSMenuItem alloc] initWithTitle:@"Memory View"
action:nil action:nil
keyEquivalent:@"4"]; keyEquivalent:@"4"];
@@ -188,8 +166,7 @@
[viewMenu addItem:[NSMenuItem separatorItem]]; [viewMenu addItem:[NSMenuItem separatorItem]];
// Toggle fullscreen button // Toggle fullscreen button
NSMenuItem *toggleFullscreenItem = NSMenuItem *toggleFullscreenItem = [[NSMenuItem alloc] initWithTitle:@"Toggle Fullscreen"
[[NSMenuItem alloc] initWithTitle:@"Toggle Fullscreen"
action:nil action:nil
keyEquivalent:@"f"]; keyEquivalent:@"f"];
@@ -201,14 +178,11 @@
NSMenuItem *helpMenuItem = [mainMenu itemWithTitle:@"Help"]; NSMenuItem *helpMenuItem = [mainMenu itemWithTitle:@"Help"];
if (!helpMenuItem) { if (!helpMenuItem) {
NSMenu *helpMenu = [[NSMenu alloc] initWithTitle:@"Help"]; NSMenu *helpMenu = [[NSMenu alloc] initWithTitle:@"Help"];
helpMenuItem = [[NSMenuItem alloc] initWithTitle:@"Help" helpMenuItem = [[NSMenuItem alloc] initWithTitle:@"Help" action:nil keyEquivalent:@""];
action:nil
keyEquivalent:@""];
[helpMenuItem setSubmenu:helpMenu]; [helpMenuItem setSubmenu:helpMenu];
// URL to online documentation // URL to online documentation
NSMenuItem *documentationItem = NSMenuItem *documentationItem = [[NSMenuItem alloc] initWithTitle:@"Documentation"
[[NSMenuItem alloc] initWithTitle:@"Documentation"
action:nil action:nil
keyEquivalent:@"?"]; keyEquivalent:@"?"];
[helpMenu addItem:documentationItem]; [helpMenu addItem:documentationItem];
@@ -233,8 +207,7 @@
- (void)openFileAction:(id)sender { - (void)openFileAction:(id)sender {
if (!yaze::app::SharedRom::shared_rom_ if (!yaze::app::SharedRom::shared_rom_
->LoadFromFile( ->LoadFromFile(yaze::app::core::FileDialogWrapper::ShowOpenFileDialog())
yaze::app::core::FileDialogWrapper::ShowOpenFileDialog())
.ok()) { .ok()) {
NSAlert *alert = [[NSAlert alloc] init]; NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Error"]; [alert setMessageText:@"Error"];
@@ -252,14 +225,17 @@
NSLog(@"Open Recent File action triggered"); NSLog(@"Open Recent File action triggered");
} }
extern "C" void yaze_run_cocoa_app_delegate(const char *filename) { extern "C" void yaze_initialize_cococa() {
@autoreleasepool { @autoreleasepool {
AppDelegate *delegate = [[AppDelegate alloc] init]; AppDelegate *delegate = [[AppDelegate alloc] init];
[NSApplication sharedApplication]; [NSApplication sharedApplication];
[NSApp setDelegate:delegate]; [NSApp setDelegate:delegate];
[NSApp finishLaunching]; [NSApp finishLaunching];
} }
}
extern "C" void yaze_run_cocoa_app_delegate(const char *filename) {
yaze_initialize_cococa();
yaze::app::core::Controller controller; yaze::app::core::Controller controller;
RETURN_VOID_IF_ERROR(controller.OnEntry(filename)); RETURN_VOID_IF_ERROR(controller.OnEntry(filename));
while (controller.IsActive()) { while (controller.IsActive()) {