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"];
45 NSMenu *mainMenu = [NSApp mainMenu];
47 NSMenuItem *fileMenuItem = [mainMenu itemWithTitle:@"File"];
49 NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
50 fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" action:nil keyEquivalent:@""];
51 [fileMenuItem setSubmenu:fileMenu];
53 NSMenuItem *openItem = [[NSMenuItem alloc] initWithTitle:@"Open"
54 action:@selector(openFileAction:)
56 [fileMenu addItem:openItem];
59 NSMenu *openRecentMenu = [[NSMenu alloc] initWithTitle:@"Open Recent"];
60 NSMenuItem *openRecentMenuItem = [[NSMenuItem alloc] initWithTitle:@"Open Recent"
63 [openRecentMenuItem setSubmenu:openRecentMenu];
64 [fileMenu addItem:openRecentMenuItem];
66 [fileMenu addItem:[NSMenuItem separatorItem]];
69 NSMenuItem *saveItem = [[NSMenuItem alloc] initWithTitle:@"Save"
70 action:@selector(saveAction:)
72 [fileMenu addItem:saveItem];
75 NSMenuItem *saveAsItem = [[NSMenuItem alloc] initWithTitle:@"Save As..."
76 action:@selector(saveAsAction:)
78 [fileMenu addItem:saveAsItem];
80 [fileMenu addItem:[NSMenuItem separatorItem]];
82 [mainMenu insertItem:fileMenuItem atIndex:1];
86 NSMenuItem *editMenuItem = [mainMenu itemWithTitle:@"Edit"];
88 NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"];
89 editMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" action:nil keyEquivalent:@""];
90 [editMenuItem setSubmenu:editMenu];
92 NSMenuItem *undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo"
93 action:@selector(undoAction:)
95 [editMenu addItem:undoItem];
97 NSMenuItem *redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo"
98 action:@selector(redoAction:)
100 [editMenu addItem:redoItem];
102 [editMenu addItem:[NSMenuItem separatorItem]];
108 [mainMenu insertItem:editMenuItem atIndex:2];
112 NSMenuItem *viewMenuItem = [mainMenu itemWithTitle:@"View"];
114 NSMenu *viewMenu = [[NSMenu alloc] initWithTitle:@"View"];
115 viewMenuItem = [[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""];
116 [viewMenuItem setSubmenu:viewMenu];
118 NSMenuItem *toggleFullscreenItem = [[NSMenuItem alloc] initWithTitle:@"Toggle Fullscreen"
119 action:@selector(toggleFullscreenAction:)
121 [viewMenu addItem:toggleFullscreenItem];
123 [mainMenu insertItem:viewMenuItem atIndex:3];
131- (void)openFileAction:(
id)sender {
137 if (app.IsReady() && app.GetController()) {
138 if (
auto* manager = app.GetController()->editor_manager()) {
139 (void)manager->LoadRom();
144- (void)saveAction:(
id)sender {
146 if (app.IsReady() && app.GetController()) {
147 if (
auto* manager = app.GetController()->editor_manager()) {
148 (void)manager->SaveRom();
153- (void)saveAsAction:(
id)sender {
155 if (app.IsReady() && app.GetController()) {
156 if (
auto* manager = app.GetController()->editor_manager()) {
157 if (
auto* popup_manager = manager->popup_manager()) {
164- (void)undoAction:(
id)sender {
167 if (app.IsReady() && app.GetController()) {
168 if (
auto* manager = app.GetController()->editor_manager()) {
171 if (
auto* current = manager->GetCurrentEditor()) {
172 (void)current->Undo();
178- (void)redoAction:(
id)sender {
180 if (app.IsReady() && app.GetController()) {
181 if (
auto* manager = app.GetController()->editor_manager()) {
182 if (
auto* current = manager->GetCurrentEditor()) {
183 (void)current->Redo();
189- (void)toggleFullscreenAction:(
id)sender {
200extern "C" void yaze_initialize_cocoa() {
203 [NSApplication sharedApplication];
204 [NSApp setDelegate:delegate];
205 [NSApp finishLaunching];
209extern "C" int yaze_run_cocoa_app_delegate(
const yaze::AppConfig& config) {
210 yaze_initialize_cocoa();
223 while (app.IsReady() && app.GetController()->IsActive()) {
static Application & Instance()
void Initialize(const AppConfig &config)
Configuration options for the application startup.