4#ifndef IMGUI_DEFINE_MATH_OPERATORS
5#define IMGUI_DEFINE_MATH_OPERATORS
16#if defined(__APPLE__) && defined(__MACH__)
18#include <TargetConditionals.h>
20#import <CoreText/CoreText.h>
22#if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1
25#elif TARGET_OS_MAC == 1
27#import <Cocoa/Cocoa.h>
29@interface AppDelegate : NSObject <NSApplicationDelegate>
35- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
40 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSQuitAlwaysKeepsWindows"];
44 NSMenu *mainMenu = [NSApp mainMenu];
46 NSMenuItem *fileMenuItem = [mainMenu itemWithTitle:@"File"];
48 NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
49 fileMenuItem = [[NSMenuItem alloc] initWithTitle:@"File" action:nil keyEquivalent:@""];
50 [fileMenuItem setSubmenu:fileMenu];
52 NSMenuItem *openItem = [[NSMenuItem alloc] initWithTitle:@"Open"
53 action:@selector(openFileAction:)
55 [fileMenu addItem:openItem];
58 NSMenu *openRecentMenu = [[NSMenu alloc] initWithTitle:@"Open Recent"];
59 NSMenuItem *openRecentMenuItem = [[NSMenuItem alloc] initWithTitle:@"Open Recent"
62 [openRecentMenuItem setSubmenu:openRecentMenu];
63 [fileMenu addItem:openRecentMenuItem];
65 [fileMenu addItem:[NSMenuItem separatorItem]];
68 NSMenuItem *saveItem = [[NSMenuItem alloc] initWithTitle:@"Save"
69 action:@selector(saveAction:)
71 [fileMenu addItem:saveItem];
74 NSMenuItem *saveAsItem = [[NSMenuItem alloc] initWithTitle:@"Save As..."
75 action:@selector(saveAsAction:)
77 [fileMenu addItem:saveAsItem];
79 [fileMenu addItem:[NSMenuItem separatorItem]];
81 [mainMenu insertItem:fileMenuItem atIndex:1];
85 NSMenuItem *editMenuItem = [mainMenu itemWithTitle:@"Edit"];
87 NSMenu *editMenu = [[NSMenu alloc] initWithTitle:@"Edit"];
88 editMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" action:nil keyEquivalent:@""];
89 [editMenuItem setSubmenu:editMenu];
91 NSMenuItem *undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo"
92 action:@selector(undoAction:)
94 [editMenu addItem:undoItem];
96 NSMenuItem *redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo"
97 action:@selector(redoAction:)
99 [editMenu addItem:redoItem];
101 [editMenu addItem:[NSMenuItem separatorItem]];
107 [mainMenu insertItem:editMenuItem atIndex:2];
111 NSMenuItem *viewMenuItem = [mainMenu itemWithTitle:@"View"];
113 NSMenu *viewMenu = [[NSMenu alloc] initWithTitle:@"View"];
114 viewMenuItem = [[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""];
115 [viewMenuItem setSubmenu:viewMenu];
117 NSMenuItem *toggleFullscreenItem = [[NSMenuItem alloc] initWithTitle:@"Toggle Fullscreen"
118 action:@selector(toggleFullscreenAction:)
120 [viewMenu addItem:toggleFullscreenItem];
122 [mainMenu insertItem:viewMenuItem atIndex:3];
130- (void)openFileAction:(
id)sender {
136 if (app.IsReady() && app.GetController()) {
137 if (
auto* manager = app.GetController()->editor_manager()) {
138 (void)manager->LoadRom();
143- (void)saveAction:(
id)sender {
145 if (app.IsReady() && app.GetController()) {
146 if (
auto* manager = app.GetController()->editor_manager()) {
147 (void)manager->SaveRom();
152- (void)saveAsAction:(
id)sender {
156 if (app.IsReady() && app.GetController()) {
157 if (
auto* manager = app.GetController()->editor_manager()) {
163 (void)manager->SaveRomAs(
"");
168- (void)undoAction:(
id)sender {
171 if (app.IsReady() && app.GetController()) {
172 if (
auto* manager = app.GetController()->editor_manager()) {
175 if (
auto* current = manager->GetCurrentEditor()) {
176 (void)current->Undo();
182- (void)redoAction:(
id)sender {
184 if (app.IsReady() && app.GetController()) {
185 if (
auto* manager = app.GetController()->editor_manager()) {
186 if (
auto* current = manager->GetCurrentEditor()) {
187 (void)current->Redo();
193- (void)toggleFullscreenAction:(
id)sender {
204extern "C" void yaze_initialize_cocoa() {
207 [NSApplication sharedApplication];
208 [NSApp setDelegate:delegate];
209 [NSApp finishLaunching];
213extern "C" int yaze_run_cocoa_app_delegate(
const yaze::AppConfig& config) {
214 yaze_initialize_cocoa();
227 while (app.IsReady() && app.GetController()->IsActive()) {
static Application & Instance()
void Initialize(const AppConfig &config)
Configuration options for the application startup.