From cf1eeb27b331468f5e877f0612507022f1e8ba4a Mon Sep 17 00:00:00 2001 From: Daniel Collin Date: Sun, 28 Oct 2012 20:03:21 +0100 Subject: [PATCH] Added save dialog --- ogl_editor/src/Dialog.h | 1 + ogl_editor/src/Editor.c | 12 ++++++++++-- ogl_editor/src/loadsave.c | 16 ++++++++-------- ogl_editor/src/macosx/FileDialog.m | 23 +++++++++++++++++++++++ 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/ogl_editor/src/Dialog.h b/ogl_editor/src/Dialog.h index a096275..eb5e156 100644 --- a/ogl_editor/src/Dialog.h +++ b/ogl_editor/src/Dialog.h @@ -1,4 +1,5 @@ #pragma once int Dialog_open(char* dest); +int Dialog_save(char* dest); diff --git a/ogl_editor/src/Editor.c b/ogl_editor/src/Editor.c index 81a8836..8af4cea 100644 --- a/ogl_editor/src/Editor.c +++ b/ogl_editor/src/Editor.c @@ -332,14 +332,22 @@ static void onOpen() /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +static void onSave() +{ + LoadSave_saveRocketXMLDialog(&s_editorData.trackData); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void Editor_menuEvent(int menuItem) { + printf("%d\n", menuItem); switch (menuItem) { //case EDITOR_MENU_NEW : onNew(); break; case EDITOR_MENU_OPEN : onOpen(); break; - //case EDITOR_MENU_SAVE : onSave(); break; - //case EDITOR_MENU_SAVE_AS : onSaveAs(); break; + case EDITOR_MENU_SAVE : + case EDITOR_MENU_SAVE_AS : onSave(); break; } } diff --git a/ogl_editor/src/loadsave.c b/ogl_editor/src/loadsave.c index 6a732d3..c4d6e01 100644 --- a/ogl_editor/src/loadsave.c +++ b/ogl_editor/src/loadsave.c @@ -130,13 +130,6 @@ int LoadSave_loadRocketXMLDialog(TrackData* trackData) int LoadSave_saveRocketXML(const char* path, TrackData* trackData) { - /* - char path[512]; - - if (!Dialog_save(path)) - return false; - */ - return false; } @@ -144,6 +137,13 @@ int LoadSave_saveRocketXML(const char* path, TrackData* trackData) int LoadSave_saveRocketXMLDialog(TrackData* trackData) { - return false; + char path[512]; + + if (!Dialog_save(path)) + return false; + + printf("%s\n", path); + + return true; } diff --git a/ogl_editor/src/macosx/FileDialog.m b/ogl_editor/src/macosx/FileDialog.m index eb12f46..8973e1f 100644 --- a/ogl_editor/src/macosx/FileDialog.m +++ b/ogl_editor/src/macosx/FileDialog.m @@ -27,4 +27,27 @@ int Dialog_open(char* dest) return true; } +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +int Dialog_save(char* dest) +{ + NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; + NSSavePanel* open = [NSSavePanel savePanel]; + + int result = [open runModal]; + + if (result != NSOKButton) + return false; + + // Grab the first file + + NSURL* url = [open URL]; + const char* temp = [[url path] UTF8String]; + + strcpy(dest, temp); + + [pool drain]; + + return true; +}