4#ifndef IMGUI_DEFINE_MATH_OPERATORS
5#define IMGUI_DEFINE_MATH_OPERATORS
17#if defined(__APPLE__) && defined(__MACH__)
19#include <TargetConditionals.h>
21#import <CoreText/CoreText.h>
23#if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1
26#elif TARGET_OS_MAC == 1
28#import <Cocoa/Cocoa.h>
30@interface AppDelegate : NSObject <NSApplicationDelegate>
36- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
41 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSQuitAlwaysKeepsWindows"];
44- (NSApplicationTerminateReply)applicationShouldTerminate:
45 (NSApplication *)sender {
48 if (!app.IsReady() || app.GetController() ==
nullptr ||
49 app.GetController()->editor_manager() ==
nullptr) {
50 return NSTerminateNow;
58 app.GetController()->editor_manager()->Quit();
59 return NSTerminateCancel;
63 NSMenu *mainMenu = [NSApp mainMenu];
65 NSMenuItem *fileMenuItem = [mainMenu itemWithTitle:@"File"];
67 NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
68 fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" action:nil keyEquivalent:@""];
69 [fileMenuItem setSubmenu:fileMenu];
71 NSMenuItem *openItem = [[NSMenuItem alloc] initWithTitle:@"Open"
72 action:@selector(openFileAction:)
74 [fileMenu addItem:openItem];
77 NSMenu *openRecentMenu = [[NSMenu alloc] initWithTitle:@"Open Recent"];
78 NSMenuItem *openRecentMenuItem = [[NSMenuItem alloc] initWithTitle:@"Open Recent"
81 [openRecentMenuItem setSubmenu:openRecentMenu];
82 [fileMenu addItem:openRecentMenuItem];
84 [fileMenu addItem:[NSMenuItem separatorItem]];
87 NSMenuItem *saveItem = [[NSMenuItem alloc] initWithTitle:@"Save"
88 action:@selector(saveAction:)
90 [fileMenu addItem:saveItem];
93 NSMenuItem *saveAsItem = [[NSMenuItem alloc] initWithTitle:@"Save As..."
94 action:@selector(saveAsAction:)
96 [fileMenu addItem:saveAsItem];
98 [fileMenu addItem:[NSMenuItem separatorItem]];
100 [mainMenu insertItem:fileMenuItem atIndex:1];
104 NSMenuItem *editMenuItem = [mainMenu itemWithTitle:@"Edit"];
106 NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"];
107 editMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" action:nil keyEquivalent:@""];
108 [editMenuItem setSubmenu:editMenu];
110 NSMenuItem *undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo"
111 action:@selector(undoAction:)
113 [editMenu addItem:undoItem];
115 NSMenuItem *redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo"
116 action:@selector(redoAction:)
118 [editMenu addItem:redoItem];
120 [editMenu addItem:[NSMenuItem separatorItem]];
126 [mainMenu insertItem:editMenuItem atIndex:2];
130 NSMenuItem *viewMenuItem = [mainMenu itemWithTitle:@"View"];
132 NSMenu *viewMenu = [[NSMenu alloc] initWithTitle:@"View"];
133 viewMenuItem = [[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""];
134 [viewMenuItem setSubmenu:viewMenu];
136 NSMenuItem *toggleFullscreenItem = [[NSMenuItem alloc] initWithTitle:@"Toggle Fullscreen"
137 action:@selector(toggleFullscreenAction:)
139 [viewMenu addItem:toggleFullscreenItem];
141 [mainMenu insertItem:viewMenuItem atIndex:3];
149- (void)openFileAction:(
id)sender {
155 if (app.IsReady() && app.GetController()) {
156 if (
auto* manager = app.GetController()->editor_manager()) {
157 (void)manager->LoadRom();
162- (void)saveAction:(
id)sender {
164 if (app.IsReady() && app.GetController()) {
165 if (
auto* manager = app.GetController()->editor_manager()) {
166 (void)manager->SaveRom();
171- (void)saveAsAction:(
id)sender {
173 if (app.IsReady() && app.GetController()) {
174 if (
auto* manager = app.GetController()->editor_manager()) {
175 if (
auto* popup_manager = manager->popup_manager()) {
182- (void)undoAction:(
id)sender {
185 if (app.IsReady() && app.GetController()) {
186 if (
auto* manager = app.GetController()->editor_manager()) {
189 if (
auto* current = manager->GetCurrentEditor()) {
190 (void)current->Undo();
196- (void)redoAction:(
id)sender {
198 if (app.IsReady() && app.GetController()) {
199 if (
auto* manager = app.GetController()->editor_manager()) {
200 if (
auto* current = manager->GetCurrentEditor()) {
201 (void)current->Redo();
207- (void)toggleFullscreenAction:(
id)sender {
218extern "C" void yaze_initialize_cocoa() {
221 [NSApplication sharedApplication];
222 [NSApp setDelegate:delegate];
223 [NSApp finishLaunching];
227extern "C" int yaze_run_cocoa_app_delegate(
const yaze::AppConfig& config) {
228 yaze_initialize_cocoa();
241 while (app.IsReady() && app.GetController()->IsActive()) {
static Application & Instance()
void Initialize(const AppConfig &config)
Configuration options for the application startup.