Mercurial > hg > openttd
changeset 2188:8d6b24c1eec7 draft
(svn r2703) - Feature: [OSX] Added a native alert window to show whatever error() needs to print (Tobin made this, while I fixed some issued in it)
- As a bonus, we now have an objective C file (os/macosx/macos.m) to use the functions Apple made to interact with OS stuff
author | bjarni <bjarni@openttd.org> |
---|---|
date | Sun, 24 Jul 2005 20:47:42 +0000 |
parents | ec59060e9c43 |
children | c91103115fd1 |
files | Makefile fileio.c os/macosx/macos.h os/macosx/macos.m unix.c |
diffstat | 5 files changed, 47 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile +++ b/Makefile @@ -718,6 +718,8 @@ CXX_SOURCES = +OBJC_SOURCES = + ifdef WITH_SDL C_SOURCES += sdl.c C_SOURCES += sound/sdl_s.c @@ -734,7 +736,11 @@ C_SOURCES += music/extmidi.c endif -OBJS = $(C_SOURCES:%.c=%.o) $(CXX_SOURCES:%.cpp=%.o) +ifdef OSX +OBJC_SOURCES += os/macosx/macos.m +endif + +OBJS = $(C_SOURCES:%.c=%.o) $(CXX_SOURCES:%.cpp=%.o) $(OBJC_SOURCES:%.m=%.o) ifdef BEOS CXX_SOURCES += music/bemidi.cpp @@ -795,6 +801,9 @@ quiet_cmd_cxx_compile = '===> Compiling $<' cmd_cxx_compile = $(CXX) $(COMPILE_PARAMS) +quiet_cmd_objc_compile = '===> Compiling $<' + cmd_objc_compile = $(CC) $(COMPILE_PARAMS) + ############################################################################## # @@ -1036,7 +1045,7 @@ ### Internal build rules # This makes sure the .deps dir is always around. -DEPS_MAGIC := $(shell mkdir -p .deps .deps/music .deps/sound .deps/video) +DEPS_MAGIC := $(shell mkdir -p .deps .deps/music .deps/sound .deps/video .deps/os .deps/os/macosx) # Introduce the dependencies -include $(DEPS) @@ -1054,6 +1063,10 @@ $(call cmd,cxx_compile) @mv $(<:%.cpp=%.d) $(<:%.cpp=.deps/%.d) +%.o: %.m $(MAKE_CONFIG) endian_target.h table/strings.h + $(call cmd,objc_compile) + @mv $(<:%.m=%.d) $(<:%.m=.deps/%.d) + # Silence stale header dependencies %.h: @true
--- a/fileio.c +++ b/fileio.c @@ -165,6 +165,10 @@ *s = tolower(*s); f = fopen(buf, "rb"); } + + if (f == NULL) + sprintf(buf, "%s%s", _path.data_dir, filename); //makes it print the primary datadir path instead of the secundary one + #endif } #endif
new file mode 100644 --- /dev/null +++ b/os/macosx/macos.h @@ -0,0 +1,6 @@ +#ifndef MACOS_H +#define MACOS_H + +void ShowMacDialog ( const char *title, const char *message, const char *buttonLabel ); + +#endif /* MACOS_H */ \ No newline at end of file
new file mode 100644 --- /dev/null +++ b/os/macosx/macos.m @@ -0,0 +1,15 @@ +#include <AppKit/AppKit.h> + +/* + * This file contains objective C + * Apple uses objective C instead of plain C to interact with OS specific/native functions + * + * Note: TrueLight's crosscompiler can handle this, but it likely needs a manual modification for each change in this file. + * To insure that the crosscompiler still works, let him try any changes before they are committed + */ + +void ShowMacDialog ( const char *title, const char *message, const char *buttonLabel ) +{ + NSRunAlertPanel([NSString stringWithCString: title], [NSString stringWithCString: message], [NSString stringWithCString: buttonLabel], nil, nil); +} +
--- a/unix.c +++ b/unix.c @@ -53,6 +53,10 @@ // ULONG __stack = #endif +#if defined(__APPLE__) +#include "os/macosx/macos.h" +#endif + static char *_fios_path; static char *_fios_save_path; static char *_fios_scn_path; @@ -467,10 +471,9 @@ void ShowOSErrorBox(const char *buf) { #if defined(__APPLE__) - // this creates an error in the console and then opens the console. - // Colourcodes are not used in the console, so they are skipped here - fprintf(stderr, "Error: %s", buf); - system("/Applications/Utilities/Console.app/Contents/MacOS/Console &"); + // this creates an NSAlertPanel with the contents of 'buf' + // this is the native and nicest way to do this on OSX + ShowMacDialog( buf, "See readme for more info\nMost likely you are missing files from the original TTD", "Quit" ); #else // all systems, but OSX fprintf(stderr, "\033[1;31mError: %s\033[0;39m\n", buf);