[Orxonox-commit 3573] r8259 - in code/branches/mac_osx: cmake cmake/tools src src/external src/external/cmcrashreporter

youngk at orxonox.net youngk at orxonox.net
Mon Apr 18 19:14:18 CEST 2011


Author: youngk
Date: 2011-04-18 19:14:18 +0200 (Mon, 18 Apr 2011)
New Revision: 8259

Added:
   code/branches/mac_osx/src/external/cmcrashreporter/
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.h
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.m
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.tmproj
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.h
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.m
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.h
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.m
   code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.xib
   code/branches/mac_osx/src/external/cmcrashreporter/CMakeLists.txt
   code/branches/mac_osx/src/external/cmcrashreporter/read-me.txt
Modified:
   code/branches/mac_osx/cmake/PrepareDevBundle.cmake
   code/branches/mac_osx/cmake/tools/TargetUtilities.cmake
   code/branches/mac_osx/src/CMakeLists.txt
   code/branches/mac_osx/src/OrxonoxMac.mm
   code/branches/mac_osx/src/external/CMakeLists.txt
Log:
Integrating automatic crash reporter. Does not work atm.

Modified: code/branches/mac_osx/cmake/PrepareDevBundle.cmake
===================================================================
--- code/branches/mac_osx/cmake/PrepareDevBundle.cmake	2011-04-18 16:45:23 UTC (rev 8258)
+++ code/branches/mac_osx/cmake/PrepareDevBundle.cmake	2011-04-18 17:14:18 UTC (rev 8259)
@@ -23,8 +23,7 @@
  #    Creates the file structure for the development application bundle
  #
 
-IF(APPLE)
-  IF(NOT CMAKE_CONFIGURATION_TYPES)
+IF(NOT CMAKE_CONFIGURATION_TYPES)
   SET(_subdirs .)
   SET(_default_subdir .)
 ELSE()
@@ -58,4 +57,3 @@
   CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/${DEFAULT_DATA_PATH}/mac/${DEVBUNDLE_DEFAULT_LANGFILE}/InfoPlist.strings" "${DEVBUNDLE_CURRENT_RESOURCES}/${DEVBUNDLE_DEFAULT_LANGFILE}/InfoPlist.strings")
 
 ENDFOREACH(_subdir)
-ENDIF(APPLE)

Modified: code/branches/mac_osx/cmake/tools/TargetUtilities.cmake
===================================================================
--- code/branches/mac_osx/cmake/tools/TargetUtilities.cmake	2011-04-18 16:45:23 UTC (rev 8258)
+++ code/branches/mac_osx/cmake/tools/TargetUtilities.cmake	2011-04-18 17:14:18 UTC (rev 8259)
@@ -178,7 +178,7 @@
 
   # Don't compile header files
   FOREACH(_file ${_${_target_name}_files})
-    IF(NOT _file MATCHES "\\.(c|cc|cpp|cxx|mm)$")
+    IF(NOT _file MATCHES "\\.(c|cc|cpp|cxx|m|mm)$")
       SET_SOURCE_FILES_PROPERTIES(${_file} PROPERTIES HEADER_FILE_ONLY TRUE)
     ENDIF()
   ENDFOREACH(_file)

Modified: code/branches/mac_osx/src/CMakeLists.txt
===================================================================
--- code/branches/mac_osx/src/CMakeLists.txt	2011-04-18 16:45:23 UTC (rev 8258)
+++ code/branches/mac_osx/src/CMakeLists.txt	2011-04-18 17:14:18 UTC (rev 8259)
@@ -172,10 +172,11 @@
 
 # Apple Mac OS X specific build settings
 IF(APPLE)
-  # On Apple we need to link to AppKit and Foundation frameworks
+  # On Apple we need to link to AppKit, Foundation frameworks
   TARGET_LINK_LIBRARIES(orxonox-main 
     "-framework AppKit"
     "-framework Foundation"
+    "-framework CoreFoundation"
   )
 
   # Post-build step for the creation of the Dev-App bundle

Modified: code/branches/mac_osx/src/OrxonoxMac.mm
===================================================================
--- code/branches/mac_osx/src/OrxonoxMac.mm	2011-04-18 16:45:23 UTC (rev 8258)
+++ code/branches/mac_osx/src/OrxonoxMac.mm	2011-04-18 17:14:18 UTC (rev 8259)
@@ -27,6 +27,7 @@
  */
 
 #import "OrxonoxMac.h"
+#import <cmcrashreporter/CMCrashReporter.h>
 
 static int argc_s = 0;
 static char** argv_s = 0;
@@ -45,6 +46,9 @@
 
 - (void)applicationDidFinishLaunching:(NSNotification *)notification
 {
+    // This call initializes the crash reporter, which sends crash reports to the developers
+    [CMCrashReporter check];
+    
     exit(main_mac(argc_s, argv_s));
 }
 

Modified: code/branches/mac_osx/src/external/CMakeLists.txt
===================================================================
--- code/branches/mac_osx/src/external/CMakeLists.txt	2011-04-18 16:45:23 UTC (rev 8258)
+++ code/branches/mac_osx/src/external/CMakeLists.txt	2011-04-18 17:14:18 UTC (rev 8259)
@@ -33,6 +33,7 @@
 
 ADD_SUBDIRECTORY(bullet)
 ADD_SUBDIRECTORY(cpptcl)
+ADD_SUBDIRECTORY(cmcrashreporter)
 ADD_SUBDIRECTORY(enet)
 ADD_SUBDIRECTORY(loki)
 ADD_SUBDIRECTORY(ogreceguirenderer)

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.h
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.h	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.h	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,21 @@
+//
+//  CMCrashReporter.h
+//  CMCrashReporter-App
+//
+//  Created by Jelle De Laender on 20/01/08.
+//  Copyright 2008 CodingMammoth. All rights reserved.
+//  Copyright 2010 CodingMammoth. Revision. All rights reserved.
+//
+//  Current version: 1.1 (September 2010)
+//
+
+#import <Cocoa/Cocoa.h>
+#import "CMCrashReporterGlobal.h"
+#import "CMCrashReporterWindow.h"
+
+ at interface CMCrashReporter : NSObject {
+
+}
++ (void)check;
++ (NSArray *)getReports;
+ at end

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.m
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.m	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.m	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,48 @@
+//
+//  CMCrashReporter.m
+//  CMCrashReporter-App
+//
+//  Created by Jelle De Laender on 20/01/08.
+//  Copyright 2008 CodingMammoth. All rights reserved.
+//  Copyright 2010 CodingMammoth. Revision. All rights reserved.
+//
+
+#import "CMCrashReporter.h"
+
+ at implementation CMCrashReporter
+
++(void)check
+{
+	NSUserDefaults *defaults = [[NSUserDefaultsController sharedUserDefaultsController] defaults];
+	if ([CMCrashReporterGlobal checkOnCrashes] && ![defaults boolForKey:@"CMCrashReporterIgnoreCrashes"]) {
+		NSArray *reports = [self getReports];
+		if ([reports count] > 0) {
+			[CMCrashReporterWindow runCrashReporterWithPaths:reports];
+		}
+	}
+}
+
++(NSArray *)getReports
+{
+	NSFileManager *fileManager = [NSFileManager defaultManager];
+	
+	if ([CMCrashReporterGlobal isRunningLeopard]) {
+		// (Snow) Leopard format is AppName_Year_Month_Day
+		NSString *file;
+		NSString *path = [@"~/Library/Logs/CrashReporter/" stringByExpandingTildeInPath];
+		NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:path];
+
+		NSMutableArray *array = [NSMutableArray array];
+		while (file = [dirEnum nextObject])
+                        if ([file hasPrefix:[CMCrashReporterGlobal appName]])
+				[array addObject:[[NSString stringWithFormat:@"~/Library/Logs/CrashReporter/%@",file] stringByExpandingTildeInPath]];
+		
+		return array;
+	} else {
+		// Tiger Formet is AppName.crash.log
+		NSString *path = [[NSString stringWithFormat:@"~/Library/Logs/CrashReporter/%@.crash.log",[CMCrashReporterGlobal appName]] stringByExpandingTildeInPath];
+		if ([fileManager fileExistsAtPath:path]) return [NSArray arrayWithObject:path];
+		else return nil;
+	}
+}
+ at end

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.tmproj
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.tmproj	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporter.tmproj	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>currentDocument</key>
+	<string>CMCrashReporterWindow.m</string>
+	<key>documents</key>
+	<array>
+		<dict>
+			<key>filename</key>
+			<string>CMCrashReporter.h</string>
+		</dict>
+		<dict>
+			<key>filename</key>
+			<string>CMCrashReporter.m</string>
+		</dict>
+		<dict>
+			<key>filename</key>
+			<string>CMCrashReporterGlobal.h</string>
+		</dict>
+		<dict>
+			<key>filename</key>
+			<string>CMCrashReporterGlobal.m</string>
+		</dict>
+		<dict>
+			<key>filename</key>
+			<string>CMCrashReporterWindow.h</string>
+		</dict>
+		<dict>
+			<key>filename</key>
+			<string>CMCrashReporterWindow.m</string>
+			<key>lastUsed</key>
+			<date>2011-02-23T16:27:21Z</date>
+			<key>selected</key>
+			<true/>
+		</dict>
+		<dict>
+			<key>filename</key>
+			<string>read-me.txt</string>
+		</dict>
+	</array>
+	<key>fileHierarchyDrawerWidth</key>
+	<integer>200</integer>
+	<key>metaData</key>
+	<dict>
+		<key>CMCrashReporterWindow.m</key>
+		<dict>
+			<key>caret</key>
+			<dict>
+				<key>column</key>
+				<integer>91</integer>
+				<key>line</key>
+				<integer>91</integer>
+			</dict>
+			<key>firstVisibleColumn</key>
+			<integer>0</integer>
+			<key>firstVisibleLine</key>
+			<integer>71</integer>
+		</dict>
+	</dict>
+	<key>openDocuments</key>
+	<array>
+		<string>CMCrashReporterWindow.m</string>
+	</array>
+	<key>showFileHierarchyDrawer</key>
+	<true/>
+	<key>windowFrame</key>
+	<string>{{204, 82}, {1227, 765}}</string>
+</dict>
+</plist>

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.h
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.h	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.h	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,37 @@
+//
+//  CMCrashReporterGlobal.h
+//  CMCrashReporter-App
+//
+//  Created by Jelle De Laender on 20/01/08.
+//  Copyright 2008 CodingMammoth. All rights reserved.
+//  Copyright 2010 CodingMammoth. Revision. All rights reserved.
+
+//
+
+#import <Cocoa/Cocoa.h>
+
+
+ at interface CMCrashReporterGlobal : NSObject
+{
+};
+
++ (NSString *)appName;
++ (NSString *)appUiName;
++ (NSString *)appVersion;
+
++ (BOOL)isRunningLeopard;
++ (BOOL)checkOnCrashes;
+
++ (NSString *)crashReportEmail;
++ (NSString *)crashReportURL;
++ (NSString *)osVersion;
+
++ (int)numberOfMaximumReports;
+
++ (void)setAppName:(NSString *)name;
++ (void)setAppUiName:(NSString *)name;
++ (void)setAppVersion:(NSString *)version;
++ (void)setCrashReportEmail:(NSString *)emailTo;
++ (void)setCrashReportURL:(NSString *)reportServerUrl;
+
+ at end

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.m
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.m	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterGlobal.m	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,145 @@
+//
+//  CMCrashReporterGlobal.m
+//  CMCrashReporter-App
+//
+//  Created by Jelle De Laender on 20/01/08.
+//  Copyright 2008 CodingMammoth. All rights reserved.
+//  Copyright 2010 CodingMammoth. Revision. All rights reserved.
+//
+
+#import "CMCrashReporterGlobal.h"
+#import <AddressBook/AddressBook.h>
+
+
+NSString* mAppName = nil;
+NSString* mAppUiName = nil;
+NSString* mAppVersion = nil;
+NSString* mCrashReportEmail = nil;
+NSString* mCrashReportEmailSubject = nil;
+NSString* mCrashReportURL = nil;
+
+
+ at implementation CMCrashReporterGlobal
+
+
+- (void)dealloc {
+    if (mAppName != nil)
+        [mAppName release];
+    if (mAppUiName != nil)
+        [mAppUiName release];
+    if (mAppVersion != nil)
+        [mAppVersion release];
+    if (mCrashReportEmail != nil)
+        [mCrashReportEmail release];
+    if (mCrashReportEmailSubject != nil)
+        [mCrashReportEmailSubject release];
+    if (mCrashReportURL != nil)
+        [mCrashReportURL release];
+
+    [super dealloc];
+}
+
+
++ (NSString *)appName
+{
+    if (mAppName != NULL)
+        return mAppName;
+    else
+	return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
+}
+
++ (NSString *)appUiName
+{
+    if (mAppUiName != NULL)
+        return mAppUiName;
+    else
+        return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
+}
+
++ (NSString *)appVersion
+{
+    if (mAppVersion != NULL)
+        return mAppVersion;
+    else
+        return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
+}
+
++ (int)numberOfMaximumReports {
+	if (! [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CMMaxReports"]) return 0;
+	
+	return [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CMMaxReports"] intValue];
+}
+
++ (BOOL)isRunningLeopard
+{
+	SInt32 MacVersion;
+	Gestalt(gestaltSystemVersion, &MacVersion);
+	return MacVersion >= 4176;
+}
+
++ (BOOL)checkOnCrashes
+{
+	// Integration for later
+	return YES;
+}
+
++ (NSString *)crashReportURL
+{
+    NSString *value;
+    if (mCrashReportURL != NULL)
+        value = mCrashReportURL;
+    else
+        value = [[[NSBundle mainBundle] infoDictionary]
+			objectForKey:@"CMSubmitURL"];
+    if (!value) NSLog(@"Warning: No CMSubmitURL - key available for CMCrashReporter. Please add this key at your info.plist file.");
+    return value;
+}
+
++ (NSString *)crashReportEmail
+{
+    NSString *email;
+    if (mCrashReportURL != NULL)
+        email = mCrashReportEmail;
+    else
+    {
+        ABMultiValue *emails = [[[ABAddressBook sharedAddressBook] me] valueForProperty: kABEmailProperty];
+        email = (NSString *) [emails valueAtIndex: [emails indexForIdentifier: [emails primaryIdentifier]]];
+     }
+
+    return email;
+}
+
++ (NSString *)osVersion
+{
+	return [[NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/SystemVersion.plist"]
+			objectForKey:@"ProductVersion"];
+}
+
++ (void)setAppName:(NSString *)name
+{
+    mAppName = name;
+}
+
++ (void)setAppUiName:(NSString *)name
+{
+    mAppUiName = name;
+}
+
++ (void)setAppVersion:(NSString *)version
+{
+    mAppVersion = version;
+}
+
++ (void)setCrashReportEmail:(NSString *)emailTo
+{
+    mCrashReportEmail = emailTo;
+}
+
++ (void)setCrashReportURL:(NSString *)reportServerUrl
+{
+    mCrashReportURL = reportServerUrl;
+}
+
+
+ at end
+

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.h
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.h	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.h	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,45 @@
+//
+//  CMCrashReporterWindow.h
+//  CMCrashReporter-App
+//
+//  Created by Jelle De Laender on 20/01/08.
+//  Copyright 2008 CodingMammoth. All rights reserved.
+//  Copyright 2010 CodingMammoth. Revision. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "CMCrashReporterGlobal.h"
+
+
+ at interface CMCrashReporterWindow : NSWindowController {
+	NSArray *paths;
+	
+	IBOutlet id description;
+	IBOutlet id mailaddress;
+	IBOutlet id commentField;
+	IBOutlet id dontShowThis;
+	IBOutlet id includeRapport;
+	IBOutlet id application;
+	IBOutlet id version;
+}
+
++ (void)runCrashReporterWithPaths:(NSArray *)ar;
+
+- (id)init;
+
+- (NSArray *)paths;
+- (void)setPaths:(NSArray *)ar;
+
+- (void)windowDidLoad;
+- (void)windowWillClose:(NSNotification *)notification;
+
+- (BOOL)submitFile:(NSString *)file;
+- (IBAction)submitData:(id)sender;
+- (IBAction)dontReport:(id)sender;
+
+- (void)close;
+
+- (void)removeCrashLog:(NSString *)path;
+- (NSData*)generateFormData:(NSDictionary*)dict;
+
+ at end

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.m
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.m	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.m	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,195 @@
+//
+//  CMCrashReporterWindow.m
+//  CMCrashReporter-App
+//
+//  Created by Jelle De Laender on 20/01/08.
+//  Copyright 2008 CodingMammoth. All rights reserved.
+//  Copyright 2010 CodingMammoth. Revision. All rights reserved.
+//
+
+#import "CMCrashReporterWindow.h"
+
+ at implementation CMCrashReporterWindow
+
++ (void)runCrashReporterWithPaths:(NSArray *)ar
+{
+	CMCrashReporterWindow *windowController = [[self alloc] init];
+	[windowController setPaths:ar];
+	[[windowController window] makeKeyAndOrderFront:nil];
+}
+
+#pragma mark Default methods
+
+- (id)init
+{
+	self = [super initWithWindowNibName:NSStringFromClass([self class])];
+	if (self) {
+    // something to do?
+	}
+	return self;
+}
+
+- (NSArray *)paths {
+	return paths;
+}
+
+- (void)setPaths:(NSArray *)ar
+{
+	[paths release];
+	[ar retain];
+	paths = ar;
+}
+
+- (void)windowDidLoad
+{
+        [[self window] setTitle:[NSString stringWithFormat:@"%@ - %@ (%@) ",@"CrashReport", [CMCrashReporterGlobal appUiName],[CMCrashReporterGlobal appVersion]]];
+	
+        NSString *email = [CMCrashReporterGlobal crashReportEmail];
+        if (email!=NULL)
+            [mailaddress setStringValue:email];
+}
+
+- (void)removeCrashLog:(NSString *)path
+{
+  NSError *error = nil;
+  [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
+}
+
+- (void)updateIgnoreCrashes
+{
+	NSUserDefaults *defaults = [[NSUserDefaultsController sharedUserDefaultsController] defaults];
+	[defaults setBool:[dontShowThis state] forKey:@"CMCrashReporterIgnoreCrashes"];
+}
+
+- (IBAction)submitData:(id)sender
+{
+        sender; //unused
+
+        int i = 0;
+	
+	BOOL failures = NO;
+	
+   int max = MIN([CMCrashReporterGlobal numberOfMaximumReports],[paths count]);
+  	
+	if (max == 0) max = [paths count];
+	
+	for (i = 0; i < max; i++) {
+		if ([self submitFile:[paths objectAtIndex:i]]) {
+			// report succeed
+			// File will be removed on close
+		} else
+			failures = YES;
+	}
+	
+	NSAlert *alert = [[[NSAlert alloc] init] autorelease];
+	[alert addButtonWithTitle:@"OK"];
+	[alert setMessageText:[CMCrashReporterGlobal appName]];
+	[alert setAlertStyle:NSInformationalAlertStyle];
+	
+	if (!failures)
+		[alert setInformativeText:[NSString stringWithFormat:@"Thanks for helping us improve %@",[CMCrashReporterGlobal appName]]];
+	else
+		[alert setInformativeText:[NSString stringWithFormat:@"%@ was unable to send the crashlog.",[CMCrashReporterGlobal appName]]];
+		
+	[alert runModal];
+	[self close];
+}
+
+- (IBAction)dontReport:(id)sender
+{
+        sender; //unused
+        [self close];
+}
+
+- (void)close {
+	[self updateIgnoreCrashes];
+	[self windowWillClose:nil];
+	[[self window] performClose:nil];
+}
+
+- (void)windowWillClose:(NSNotification *)notification
+{
+        notification; //unused
+
+        /* Window need to close -- We remove all the reports -- */
+        unsigned int i = 0;
+	for (i = 0; i < [paths count]; i++) {
+		if ([[NSFileManager defaultManager] fileExistsAtPath:[paths objectAtIndex:i]])
+			[self removeCrashLog:[paths objectAtIndex:i]];
+	}
+}
+
+#pragma mark send
+
+-(BOOL)submitFile:(NSString *)file
+{
+	NSMutableDictionary* post_dict = [[NSMutableDictionary alloc] init];
+
+	[post_dict setValue:[NSString stringWithString:@"CMCrashReporter"] forKey:@"type"];
+	[post_dict setValue:[CMCrashReporterGlobal appName] forKey:@"application"];
+	[post_dict setValue:[CMCrashReporterGlobal version] forKey:@"appVersion"];
+	[post_dict setValue:[CMCrashReporterGlobal osVersion] forKey:@"osVersion"];
+	[post_dict setValue:[NSString stringWithString:[mailaddress stringValue]] forKey:@"mailaddress"];
+	[post_dict setValue:[NSString stringWithString:[[commentField textStorage] string]] forKey:@"comments"];
+	[post_dict setValue: [[[[NSDateFormatter alloc] initWithDateFormat:@"%H:%M:%S" allowNaturalLanguage:NO] autorelease] stringFromDate:[NSDate date]] forKey:@"time"];
+	[post_dict setValue: [[[[NSDateFormatter alloc] initWithDateFormat:@"%m/%d/%Y" allowNaturalLanguage:NO] autorelease] stringFromDate:[NSDate date]] forKey:@"date"];
+	
+	if ([includeRapport state])
+		[post_dict setValue:[NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil] forKey:@"rapport"];
+	else
+		[post_dict setValue:@"not included" forKey:@"rapport"];
+	
+	NSData* regData = [self generateFormData:post_dict];
+	[post_dict release];
+
+	NSURL *url = [NSURL URLWithString:[CMCrashReporterGlobal crashReportURL]];
+	NSMutableURLRequest* post = [NSMutableURLRequest requestWithURL:url];
+	[post addValue: @"multipart/form-data; boundary=_insert_some_boundary_here_" forHTTPHeaderField: @"Content-Type"];
+	[post setHTTPMethod: @"POST"];
+	[post setHTTPBody:regData];
+	
+	NSURLResponse* response;
+	NSError* error;
+	NSData* result = [NSURLConnection sendSynchronousRequest:post returningResponse:&response error:&error];
+  NSString *res = [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease];
+  NSString *compare = [res stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
+  return ([compare isEqualToString:@"ok"]);
+
+}
+
+#pragma mark Generate form data
+
+- (NSData*)generateFormData:(NSDictionary*)dict
+{
+	NSString* boundary = [NSString stringWithString:@"_insert_some_boundary_here_"];
+	NSArray* keys = [dict allKeys];
+	NSMutableData* result = [[NSMutableData alloc] initWithCapacity:100];
+
+        unsigned int i;
+	for (i = 0; i < [keys count]; i++) 
+	{
+		id value = [dict valueForKey: [keys objectAtIndex: i]];
+		[result appendData:[[NSString stringWithFormat:@"--%@\n", boundary] dataUsingEncoding:NSASCIIStringEncoding]];
+		if ( ([value class] == [NSString class]) || ([@"tmp" isKindOfClass:[value class]]))
+		{
+			[result appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\n\n", [keys objectAtIndex:i]] dataUsingEncoding:NSASCIIStringEncoding]];
+			[result appendData:[[NSString stringWithFormat:@"%@",value] dataUsingEncoding:NSASCIIStringEncoding]];
+		}
+		else if ([value class] == [NSURL class] && [value isFileURL])
+		{
+			[result appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\n", [keys objectAtIndex:i], [[value path] lastPathComponent]] dataUsingEncoding:NSASCIIStringEncoding]];
+			[result appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\n\n"] dataUsingEncoding:NSASCIIStringEncoding]];
+			[result appendData:[NSData dataWithContentsOfFile:[value path]]];
+		}
+		else
+		{
+			NSLog(@"No string or NSURL!");
+		}
+		
+		[result appendData:[[NSString stringWithString:@"\n"] dataUsingEncoding:NSASCIIStringEncoding]];
+	}
+	[result appendData:[[NSString stringWithFormat:@"--%@--\n", boundary] dataUsingEncoding:NSASCIIStringEncoding]];
+	
+	return [result autorelease];
+}
+ at end

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.xib
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.xib	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMCrashReporterWindow.xib	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,903 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+	<data>
+		<int key="IBDocument.SystemTarget">1060</int>
+		<string key="IBDocument.SystemVersion">10J869</string>
+		<string key="IBDocument.InterfaceBuilderVersion">1305</string>
+		<string key="IBDocument.AppKitVersion">1038.35</string>
+		<string key="IBDocument.HIToolboxVersion">461.00</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+			<string key="NS.object.0">1305</string>
+		</object>
+		<array key="IBDocument.IntegratedClassDependencies">
+			<string>NSScroller</string>
+			<string>NSButton</string>
+			<string>NSScrollView</string>
+			<string>NSTextFieldCell</string>
+			<string>NSImageView</string>
+			<string>NSBox</string>
+			<string>NSImageCell</string>
+			<string>NSButtonCell</string>
+			<string>NSCustomObject</string>
+			<string>NSTextView</string>
+			<string>NSView</string>
+			<string>NSWindowTemplate</string>
+			<string>NSTextField</string>
+		</array>
+		<array key="IBDocument.PluginDependencies">
+			<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+		</array>
+		<object class="NSMutableDictionary" key="IBDocument.Metadata">
+			<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+			<integer value="1" key="NS.object.0"/>
+		</object>
+		<array class="NSMutableArray" key="IBDocument.RootObjects" id="544090607">
+			<object class="NSCustomObject" id="634750531">
+				<string key="NSClassName">CMCrashReporterWindow</string>
+			</object>
+			<object class="NSCustomObject" id="686651762">
+				<string key="NSClassName">FirstResponder</string>
+			</object>
+			<object class="NSCustomObject" id="507874050">
+				<string key="NSClassName">NSApplication</string>
+			</object>
+			<object class="NSWindowTemplate" id="112558122">
+				<int key="NSWindowStyleMask">7</int>
+				<int key="NSWindowBacking">2</int>
+				<string key="NSWindowRect">{{400, 212}, {453, 394}}</string>
+				<int key="NSWTFlags">536870912</int>
+				<string key="NSWindowTitle">Report a Crash</string>
+				<string key="NSWindowClass">NSWindow</string>
+				<nil key="NSViewClass"/>
+				<object class="NSView" key="NSWindowView" id="421821893">
+					<reference key="NSNextResponder"/>
+					<int key="NSvFlags">256</int>
+					<array class="NSMutableArray" key="NSSubviews">
+						<object class="NSTextField" id="11593077">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{95, 310}, {316, 64}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="409814192"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSTextFieldCell" key="NSCell" id="519466127">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">272629760</int>
+								<string key="NSContents">Oops, it seems like this application quit unexpectedly last time. You can send us a report to help us improving this application.</string>
+								<object class="NSFont" key="NSSupport" id="687928009">
+									<string key="NSName">LucidaGrande</string>
+									<double key="NSSize">13</double>
+									<int key="NSfFlags">1044</int>
+								</object>
+								<reference key="NSControlView" ref="11593077"/>
+								<object class="NSColor" key="NSBackgroundColor" id="222656639">
+									<int key="NSColorSpace">6</int>
+									<string key="NSCatalogName">System</string>
+									<string key="NSColorName">controlColor</string>
+									<object class="NSColor" key="NSColor" id="328782211">
+										<int key="NSColorSpace">3</int>
+										<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+									</object>
+								</object>
+								<object class="NSColor" key="NSTextColor" id="505378616">
+									<int key="NSColorSpace">6</int>
+									<string key="NSCatalogName">System</string>
+									<string key="NSColorName">controlTextColor</string>
+									<object class="NSColor" key="NSColor" id="935886955">
+										<int key="NSColorSpace">3</int>
+										<bytes key="NSWhite">MAA</bytes>
+									</object>
+								</object>
+							</object>
+						</object>
+						<object class="NSImageView" id="867011310">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<set class="NSMutableSet" key="NSDragTypes">
+								<string>Apple PDF pasteboard type</string>
+								<string>Apple PICT pasteboard type</string>
+								<string>Apple PNG pasteboard type</string>
+								<string>NSFilenamesPboardType</string>
+								<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+								<string>NeXT TIFF v4.0 pasteboard type</string>
+							</set>
+							<string key="NSFrame">{{17, 313}, {64, 64}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="11593077"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSImageCell" key="NSCell" id="94420877">
+								<int key="NSCellFlags">130560</int>
+								<int key="NSCellFlags2">33554432</int>
+								<object class="NSCustomResource" key="NSContents">
+									<string key="NSClassName">NSImage</string>
+									<string key="NSResourceName">NSApplicationIcon</string>
+								</object>
+								<int key="NSAlign">0</int>
+								<int key="NSScale">0</int>
+								<int key="NSStyle">0</int>
+								<bool key="NSAnimates">NO</bool>
+							</object>
+							<bool key="NSEditable">YES</bool>
+						</object>
+						<object class="NSScrollView" id="301151392">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">256</int>
+							<array class="NSMutableArray" key="NSSubviews">
+								<object class="NSClipView" id="787129029">
+									<reference key="NSNextResponder" ref="301151392"/>
+									<int key="NSvFlags">2304</int>
+									<array class="NSMutableArray" key="NSSubviews">
+										<object class="NSTextView" id="983217202">
+											<reference key="NSNextResponder" ref="787129029"/>
+											<int key="NSvFlags">2322</int>
+											<set class="NSMutableSet" key="NSDragTypes">
+												<string>Apple HTML pasteboard type</string>
+												<string>Apple PDF pasteboard type</string>
+												<string>Apple PICT pasteboard type</string>
+												<string>Apple PNG pasteboard type</string>
+												<string>Apple URL pasteboard type</string>
+												<string>CorePasteboardFlavorType 0x6D6F6F76</string>
+												<string>NSColor pasteboard type</string>
+												<string>NSFilenamesPboardType</string>
+												<string>NSStringPboardType</string>
+												<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+												<string>NeXT RTFD pasteboard type</string>
+												<string>NeXT Rich Text Format v1.0 pasteboard type</string>
+												<string>NeXT TIFF v4.0 pasteboard type</string>
+												<string>NeXT font pasteboard type</string>
+												<string>NeXT ruler pasteboard type</string>
+												<string>WebURLsWithTitlesPboardType</string>
+												<string>public.url</string>
+											</set>
+											<string key="NSFrameSize">{396, 14}</string>
+											<reference key="NSSuperview" ref="787129029"/>
+											<reference key="NSWindow"/>
+											<reference key="NSNextKeyView" ref="467437854"/>
+											<object class="NSTextContainer" key="NSTextContainer" id="293065596">
+												<object class="NSLayoutManager" key="NSLayoutManager">
+													<object class="NSTextStorage" key="NSTextStorage">
+														<object class="NSMutableString" key="NSString">
+															<characters key="NS.bytes"/>
+														</object>
+														<nil key="NSDelegate"/>
+													</object>
+													<array class="NSMutableArray" key="NSTextContainers">
+														<reference ref="293065596"/>
+													</array>
+													<int key="NSLMFlags">6</int>
+													<nil key="NSDelegate"/>
+												</object>
+												<reference key="NSTextView" ref="983217202"/>
+												<double key="NSWidth">396</double>
+												<int key="NSTCFlags">1</int>
+											</object>
+											<object class="NSTextViewSharedData" key="NSSharedData">
+												<int key="NSFlags">11235</int>
+												<int key="NSTextCheckingTypes">0</int>
+												<nil key="NSMarkedAttributes"/>
+												<object class="NSColor" key="NSBackgroundColor" id="523981446">
+													<int key="NSColorSpace">3</int>
+													<bytes key="NSWhite">MQA</bytes>
+												</object>
+												<dictionary key="NSSelectedAttributes">
+													<object class="NSColor" key="NSBackgroundColor">
+														<int key="NSColorSpace">6</int>
+														<string key="NSCatalogName">System</string>
+														<string key="NSColorName">selectedTextBackgroundColor</string>
+														<reference key="NSColor" ref="328782211"/>
+													</object>
+													<object class="NSColor" key="NSColor">
+														<int key="NSColorSpace">6</int>
+														<string key="NSCatalogName">System</string>
+														<string key="NSColorName">selectedTextColor</string>
+														<reference key="NSColor" ref="935886955"/>
+													</object>
+												</dictionary>
+												<reference key="NSInsertionColor" ref="935886955"/>
+												<dictionary key="NSLinkAttributes">
+													<object class="NSColor" key="NSColor">
+														<int key="NSColorSpace">1</int>
+														<bytes key="NSRGB">MCAwIDEAA</bytes>
+													</object>
+													<integer value="1" key="NSUnderline"/>
+												</dictionary>
+												<nil key="NSDefaultParagraphStyle"/>
+											</object>
+											<int key="NSTVFlags">6</int>
+											<string key="NSMaxSize">{398, 1e+07}</string>
+											<string key="NSMinize">{114, 0}</string>
+											<nil key="NSDelegate"/>
+										</object>
+									</array>
+									<string key="NSFrame">{{1, 1}, {396, 116}}</string>
+									<reference key="NSSuperview" ref="301151392"/>
+									<reference key="NSWindow"/>
+									<reference key="NSNextKeyView" ref="983217202"/>
+									<reference key="NSDocView" ref="983217202"/>
+									<reference key="NSBGColor" ref="523981446"/>
+									<object class="NSCursor" key="NSCursor">
+										<string key="NSHotSpot">{4, -5}</string>
+										<int key="NSCursorType">1</int>
+									</object>
+									<int key="NScvFlags">4</int>
+								</object>
+								<object class="NSScroller" id="467437854">
+									<reference key="NSNextResponder" ref="301151392"/>
+									<int key="NSvFlags">256</int>
+									<string key="NSFrame">{{397, 1}, {15, 116}}</string>
+									<reference key="NSSuperview" ref="301151392"/>
+									<reference key="NSWindow"/>
+									<reference key="NSNextKeyView" ref="445462230"/>
+									<reference key="NSTarget" ref="301151392"/>
+									<string key="NSAction">_doScroller:</string>
+									<double key="NSPercent">0.98305082321166992</double>
+								</object>
+								<object class="NSScroller" id="19233346">
+									<reference key="NSNextResponder" ref="301151392"/>
+									<int key="NSvFlags">-2147483392</int>
+									<string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+									<reference key="NSSuperview" ref="301151392"/>
+									<reference key="NSWindow"/>
+									<reference key="NSNextKeyView" ref="787129029"/>
+									<int key="NSsFlags">1</int>
+									<reference key="NSTarget" ref="301151392"/>
+									<string key="NSAction">_doScroller:</string>
+									<double key="NSCurValue">1</double>
+									<double key="NSPercent">0.94565218687057495</double>
+								</object>
+							</array>
+							<string key="NSFrame">{{20, 162}, {413, 118}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="19233346"/>
+							<int key="NSsFlags">18</int>
+							<reference key="NSVScroller" ref="467437854"/>
+							<reference key="NSHScroller" ref="19233346"/>
+							<reference key="NSContentView" ref="787129029"/>
+						</object>
+						<object class="NSButton" id="445462230">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">256</int>
+							<string key="NSFrame">{{18, 138}, {417, 18}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="34729833"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="821857862">
+								<int key="NSCellFlags">-2080244224</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">Include anonymous crash report with technical information</string>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSControlView" ref="445462230"/>
+								<int key="NSButtonFlags">1211912703</int>
+								<int key="NSButtonFlags2">2</int>
+								<object class="NSButtonImageSource" key="NSAlternateImage" id="220037912">
+									<string key="NSImageName">NSSwitch</string>
+								</object>
+								<string key="NSAlternateContents"/>
+								<string key="NSKeyEquivalent"/>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSTextField" id="409814192">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">256</int>
+							<string key="NSFrame">{{20, 288}, {413, 14}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="301151392"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSTextFieldCell" key="NSCell" id="812530724">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">272629760</int>
+								<string key="NSContents">Please specify what you did when the app crashed. (optional)</string>
+								<object class="NSFont" key="NSSupport">
+									<string key="NSName">LucidaGrande</string>
+									<double key="NSSize">11</double>
+									<int key="NSfFlags">3100</int>
+								</object>
+								<reference key="NSControlView" ref="409814192"/>
+								<reference key="NSBackgroundColor" ref="222656639"/>
+								<reference key="NSTextColor" ref="505378616"/>
+							</object>
+						</object>
+						<object class="NSTextField" id="32464330">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{119, 57}, {314, 22}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="822024906"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSTextFieldCell" key="NSCell" id="3894257">
+								<int key="NSCellFlags">-1804468671</int>
+								<int key="NSCellFlags2">272630784</int>
+								<string key="NSContents"/>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSControlView" ref="32464330"/>
+								<bool key="NSDrawsBackground">YES</bool>
+								<object class="NSColor" key="NSBackgroundColor" id="814792843">
+									<int key="NSColorSpace">6</int>
+									<string key="NSCatalogName">System</string>
+									<string key="NSColorName">textBackgroundColor</string>
+									<reference key="NSColor" ref="523981446"/>
+								</object>
+								<object class="NSColor" key="NSTextColor">
+									<int key="NSColorSpace">6</int>
+									<string key="NSCatalogName">System</string>
+									<string key="NSColorName">textColor</string>
+									<reference key="NSColor" ref="935886955"/>
+								</object>
+							</object>
+						</object>
+						<object class="NSButton" id="5590046">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{343, 9}, {96, 32}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="76896251">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Report</string>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSControlView" ref="5590046"/>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">129</int>
+								<string key="NSAlternateContents"/>
+								<string key="NSKeyEquivalent"/>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSButton" id="775514680">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{247, 9}, {96, 32}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="5590046"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="674673856">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">134217728</int>
+								<string key="NSContents">Ignore</string>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSControlView" ref="775514680"/>
+								<int key="NSButtonFlags">-2038284033</int>
+								<int key="NSButtonFlags2">129</int>
+								<string key="NSAlternateContents"/>
+								<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSButton" id="822024906">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">256</int>
+							<string key="NSFrame">{{18, 18}, {185, 18}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="775514680"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSButtonCell" key="NSCell" id="527874703">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">Don't show this anymore</string>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSControlView" ref="822024906"/>
+								<int key="NSButtonFlags">1211912703</int>
+								<int key="NSButtonFlags2">2</int>
+								<reference key="NSAlternateImage" ref="220037912"/>
+								<string key="NSAlternateContents"/>
+								<string key="NSKeyEquivalent"/>
+								<int key="NSPeriodicDelay">200</int>
+								<int key="NSPeriodicInterval">25</int>
+							</object>
+						</object>
+						<object class="NSBox" id="34729833">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{20, 127}, {413, 5}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="216162799"/>
+							<string key="NSOffsets">{0, 0}</string>
+							<object class="NSTextFieldCell" key="NSTitleCell">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">0</int>
+								<string key="NSContents">Box</string>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSBackgroundColor" ref="814792843"/>
+								<object class="NSColor" key="NSTextColor">
+									<int key="NSColorSpace">3</int>
+									<bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
+								</object>
+							</object>
+							<int key="NSBorderType">3</int>
+							<int key="NSBoxType">2</int>
+							<int key="NSTitlePosition">0</int>
+							<bool key="NSTransparent">NO</bool>
+						</object>
+						<object class="NSTextField" id="979080861">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{17, 59}, {102, 17}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="32464330"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSTextFieldCell" key="NSCell" id="544333105">
+								<int key="NSCellFlags">67239488</int>
+								<int key="NSCellFlags2">272630784</int>
+								<string key="NSContents">Email address:</string>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSControlView" ref="979080861"/>
+								<reference key="NSBackgroundColor" ref="222656639"/>
+								<reference key="NSTextColor" ref="505378616"/>
+							</object>
+						</object>
+						<object class="NSTextField" id="216162799">
+							<reference key="NSNextResponder" ref="421821893"/>
+							<int key="NSvFlags">268</int>
+							<string key="NSFrame">{{14, 87}, {422, 34}}</string>
+							<reference key="NSSuperview" ref="421821893"/>
+							<reference key="NSWindow"/>
+							<reference key="NSNextKeyView" ref="979080861"/>
+							<bool key="NSEnabled">YES</bool>
+							<object class="NSTextFieldCell" key="NSCell" id="693906202">
+								<int key="NSCellFlags">67239424</int>
+								<int key="NSCellFlags2">272629760</int>
+								<string key="NSContents">Leave an email address if you would like us to get back to you.</string>
+								<reference key="NSSupport" ref="687928009"/>
+								<reference key="NSControlView" ref="216162799"/>
+								<reference key="NSBackgroundColor" ref="222656639"/>
+								<reference key="NSTextColor" ref="505378616"/>
+							</object>
+						</object>
+					</array>
+					<string key="NSFrame">{{7, 11}, {453, 394}}</string>
+					<reference key="NSSuperview"/>
+					<reference key="NSWindow"/>
+					<reference key="NSNextKeyView" ref="867011310"/>
+				</object>
+				<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+				<string key="NSMaxSize">{1e+13, 1e+13}</string>
+			</object>
+		</array>
+		<object class="IBObjectContainer" key="IBDocument.Objects">
+			<array class="NSMutableArray" key="connectionRecords">
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">description</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="11593077"/>
+					</object>
+					<int key="connectionID">40</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">includeRapport</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="445462230"/>
+					</object>
+					<int key="connectionID">43</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">dontReport:</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="775514680"/>
+					</object>
+					<int key="connectionID">60</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">submitData:</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="5590046"/>
+					</object>
+					<int key="connectionID">61</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">dontShowThis</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="822024906"/>
+					</object>
+					<int key="connectionID">106</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">commentField</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="983217202"/>
+					</object>
+					<int key="connectionID">153</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">window</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="112558122"/>
+					</object>
+					<int key="connectionID">168</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">delegate</string>
+						<reference key="source" ref="112558122"/>
+						<reference key="destination" ref="634750531"/>
+					</object>
+					<int key="connectionID">182</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">mailaddress</string>
+						<reference key="source" ref="634750531"/>
+						<reference key="destination" ref="32464330"/>
+					</object>
+					<int key="connectionID">196</int>
+				</object>
+			</array>
+			<object class="IBMutableOrderedSet" key="objectRecords">
+				<array key="orderedObjects">
+					<object class="IBObjectRecord">
+						<int key="objectID">0</int>
+						<array key="object" id="0"/>
+						<reference key="children" ref="544090607"/>
+						<nil key="parent"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-2</int>
+						<reference key="object" ref="634750531"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">File's Owner</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-1</int>
+						<reference key="object" ref="686651762"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">First Responder</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-3</int>
+						<reference key="object" ref="507874050"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Application</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">1</int>
+						<reference key="object" ref="112558122"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="421821893"/>
+						</array>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Window (Window)</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">2</int>
+						<reference key="object" ref="421821893"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="11593077"/>
+							<reference ref="867011310"/>
+							<reference ref="445462230"/>
+							<reference ref="409814192"/>
+							<reference ref="5590046"/>
+							<reference ref="775514680"/>
+							<reference ref="822024906"/>
+							<reference ref="34729833"/>
+							<reference ref="979080861"/>
+							<reference ref="32464330"/>
+							<reference ref="216162799"/>
+							<reference ref="301151392"/>
+						</array>
+						<reference key="parent" ref="112558122"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">5</int>
+						<reference key="object" ref="11593077"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="519466127"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">7</int>
+						<reference key="object" ref="867011310"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="94420877"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">9</int>
+						<reference key="object" ref="301151392"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="983217202"/>
+							<reference ref="467437854"/>
+							<reference ref="19233346"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">14</int>
+						<reference key="object" ref="983217202"/>
+						<reference key="parent" ref="301151392"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">10</int>
+						<reference key="object" ref="445462230"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="821857862"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">15</int>
+						<reference key="object" ref="409814192"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="812530724"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">19</int>
+						<reference key="object" ref="32464330"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="3894257"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">23</int>
+						<reference key="object" ref="5590046"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="76896251"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">25</int>
+						<reference key="object" ref="775514680"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="674673856"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">44</int>
+						<reference key="object" ref="822024906"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="527874703"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">123</int>
+						<reference key="object" ref="34729833"/>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">126</int>
+						<reference key="object" ref="979080861"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="544333105"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">134</int>
+						<reference key="object" ref="216162799"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="693906202"/>
+						</array>
+						<reference key="parent" ref="421821893"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">198</int>
+						<reference key="object" ref="519466127"/>
+						<reference key="parent" ref="11593077"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">199</int>
+						<reference key="object" ref="94420877"/>
+						<reference key="parent" ref="867011310"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">200</int>
+						<reference key="object" ref="821857862"/>
+						<reference key="parent" ref="445462230"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">201</int>
+						<reference key="object" ref="812530724"/>
+						<reference key="parent" ref="409814192"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">202</int>
+						<reference key="object" ref="3894257"/>
+						<reference key="parent" ref="32464330"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">203</int>
+						<reference key="object" ref="76896251"/>
+						<reference key="parent" ref="5590046"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">204</int>
+						<reference key="object" ref="674673856"/>
+						<reference key="parent" ref="775514680"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">205</int>
+						<reference key="object" ref="527874703"/>
+						<reference key="parent" ref="822024906"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">206</int>
+						<reference key="object" ref="544333105"/>
+						<reference key="parent" ref="979080861"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">207</int>
+						<reference key="object" ref="693906202"/>
+						<reference key="parent" ref="216162799"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">208</int>
+						<reference key="object" ref="467437854"/>
+						<reference key="parent" ref="301151392"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">209</int>
+						<reference key="object" ref="19233346"/>
+						<reference key="parent" ref="301151392"/>
+					</object>
+				</array>
+			</object>
+			<dictionary class="NSMutableDictionary" key="flattenedProperties">
+				<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="-3.ImportedFromIB2"/>
+				<string key="1.IBEditorWindowLastContentRect">{{342, 351}, {453, 394}}</string>
+				<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="1.IBWindowTemplateEditedContentRect">{{342, 351}, {453, 394}}</string>
+				<boolean value="YES" key="1.ImportedFromIB2"/>
+				<boolean value="YES" key="1.NSWindowTemplate.visibleAtLaunch"/>
+				<string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="10.ImportedFromIB2"/>
+				<string key="123.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="123.ImportedFromIB2"/>
+				<string key="126.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="126.ImportedFromIB2"/>
+				<string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<object class="NSAffineTransform" key="134.IBViewBoundsToFrameTransform">
+					<bytes key="NSTransformStruct">P4AAAL+AAABAAAAAwuoAAA</bytes>
+				</object>
+				<boolean value="YES" key="134.ImportedFromIB2"/>
+				<string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="14.ImportedFromIB2"/>
+				<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="15.ImportedFromIB2"/>
+				<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="19.ImportedFromIB2"/>
+				<string key="198.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="199.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="2.ImportedFromIB2"/>
+				<string key="200.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="201.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="202.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="203.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="204.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="205.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="206.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="207.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="208.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="208.IBShouldRemoveOnLegacySave"/>
+				<string key="209.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="209.IBShouldRemoveOnLegacySave"/>
+				<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="23.ImportedFromIB2"/>
+				<string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="25.ImportedFromIB2"/>
+				<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="44.ImportedFromIB2"/>
+				<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="5.ImportedFromIB2"/>
+				<string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="7.ImportedFromIB2"/>
+				<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<boolean value="YES" key="9.ImportedFromIB2"/>
+			</dictionary>
+			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+			<nil key="activeLocalization"/>
+			<dictionary class="NSMutableDictionary" key="localizations"/>
+			<nil key="sourceID"/>
+			<int key="maxID">209</int>
+		</object>
+		<object class="IBClassDescriber" key="IBDocument.Classes">
+			<array class="NSMutableArray" key="referencedPartialClassDescriptions">
+				<object class="IBPartialClassDescription">
+					<string key="className">CMCrashReporterWindow</string>
+					<string key="superclassName">NSWindowController</string>
+					<dictionary class="NSMutableDictionary" key="actions">
+						<string key="dontReport:">id</string>
+						<string key="submitData:">id</string>
+					</dictionary>
+					<dictionary class="NSMutableDictionary" key="actionInfosByName">
+						<object class="IBActionInfo" key="dontReport:">
+							<string key="name">dontReport:</string>
+							<string key="candidateClassName">id</string>
+						</object>
+						<object class="IBActionInfo" key="submitData:">
+							<string key="name">submitData:</string>
+							<string key="candidateClassName">id</string>
+						</object>
+					</dictionary>
+					<dictionary class="NSMutableDictionary" key="outlets">
+						<string key="application">id</string>
+						<string key="commentField">id</string>
+						<string key="description">id</string>
+						<string key="dontShowThis">id</string>
+						<string key="includeRapport">id</string>
+						<string key="mailaddress">id</string>
+						<string key="version">id</string>
+					</dictionary>
+					<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+						<object class="IBToOneOutletInfo" key="application">
+							<string key="name">application</string>
+							<string key="candidateClassName">id</string>
+						</object>
+						<object class="IBToOneOutletInfo" key="commentField">
+							<string key="name">commentField</string>
+							<string key="candidateClassName">id</string>
+						</object>
+						<object class="IBToOneOutletInfo" key="description">
+							<string key="name">description</string>
+							<string key="candidateClassName">id</string>
+						</object>
+						<object class="IBToOneOutletInfo" key="dontShowThis">
+							<string key="name">dontShowThis</string>
+							<string key="candidateClassName">id</string>
+						</object>
+						<object class="IBToOneOutletInfo" key="includeRapport">
+							<string key="name">includeRapport</string>
+							<string key="candidateClassName">id</string>
+						</object>
+						<object class="IBToOneOutletInfo" key="mailaddress">
+							<string key="name">mailaddress</string>
+							<string key="candidateClassName">id</string>
+						</object>
+						<object class="IBToOneOutletInfo" key="version">
+							<string key="name">version</string>
+							<string key="candidateClassName">id</string>
+						</object>
+					</dictionary>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBProjectSource</string>
+						<string key="minorKey">./Classes/CMCrashReporterWindow.h</string>
+					</object>
+				</object>
+			</array>
+		</object>
+		<int key="IBDocument.localizationMode">0</int>
+		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+			<integer value="1060" key="NS.object.0"/>
+		</object>
+		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+		<int key="IBDocument.defaultPropertyAccessControl">3</int>
+		<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+			<string key="NS.key.0">NSApplicationIcon</string>
+			<string key="NS.object.0">{128, 128}</string>
+		</object>
+	</data>
+</archive>

Added: code/branches/mac_osx/src/external/cmcrashreporter/CMakeLists.txt
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/CMakeLists.txt	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/CMakeLists.txt	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,68 @@
+ #
+ #             ORXONOX - the hottest 3D action shooter ever to exist
+ #                             > www.orxonox.net <
+ #
+ #        This program is free software; you can redistribute it and/or
+ #         modify it under the terms of the GNU General Public License
+ #        as published by the Free Software Foundation; either version 2
+ #            of the License, or (at your option) any later version.
+ #
+ #       This program is distributed in the hope that it will be useful,
+ #        but WITHOUT ANY WARRANTY; without even the implied warranty of
+ #        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ #                 GNU General Public License for more details.
+ #
+ #   You should have received a copy of the GNU General Public License along
+ #      with this program; if not, write to the Free Software Foundation,
+ #     Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ #
+IF(APPLE)
+
+SET_SOURCE_FILES(CCR_FILES
+  CMCrashReporter.m
+  CMCrashReporterGlobal.m
+  CMCrashReporterWindow.m
+)
+
+ORXONOX_ADD_LIBRARY(cmcrashreporter_orxonox
+  ORXONOX_EXTERNAL
+  LINK_LIBRARIES
+    "-framework CoreFoundation"
+    "-framework Cocoa"
+    "-framework AddressBook"
+  SOURCE_FILES
+    ${CCR_FILES}
+)
+
+IF(NOT CMAKE_CONFIGURATION_TYPES)
+  SET(_subdirs .)
+  SET(_default_subdir .)
+ELSE()
+  SET(_subdirs ${CMAKE_CONFIGURATION_TYPES})
+  SET(_default_subdir) # No default subdir
+ENDIF()
+
+FOREACH(_subdir ${_subdirs})
+  GET_FILENAME_COMPONENT(CURRENT_RUNTIME_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_subdir} ABSOLUTE)
+
+  # Convenience variables
+  # Note that this is just an empty bundle! The executable itself will
+  # be added at build time
+  SET(DEVBUNDLE_CURRENT_DIR "${CURRENT_RUNTIME_DIR}/${PROJECT_NAME}.app/Contents")
+  SET(DEVBUNDLE_CURRENT_BIN "${DEVBUNDLE_CURRENT_DIR}/MacOS")
+  SET(DEVBUNDLE_CURRENT_RESOURCES "${DEVBUNDLE_CURRENT_DIR}/Resources")
+  SET(DEVBUNDLE_DEFAULT_LANGFILE "English.lproj")
+  SET(DEVBUNDLE_NIB_FILE "MainMenu.nib")
+
+  # Create bundle folder structure
+  FILE(MAKE_DIRECTORY "${DEVBUNDLE_CURRENT_DIR}")
+  FILE(MAKE_DIRECTORY "${DEVBUNDLE_CURRENT_BIN}")
+  FILE(MAKE_DIRECTORY "${DEVBUNDLE_CURRENT_RESOURCES}")
+  FILE(MAKE_DIRECTORY "${DEVBUNDLE_CURRENT_RESOURCES}/${DEVBUNDLE_DEFAULT_LANGFILE}/${DEVBUNDLE_NIB_FILE}")
+  
+  # Populate app with additional NIB file.
+  CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/CMCrashReporterWindow.xib" "${DEVBUNDLE_CURRENT_RESOURCES}/${DEVBUNDLE_DEFAULT_LANGFILE}/CMCrashReporterWindow.xib" COPYONLY)
+
+ENDFOREACH(_subdir)
+
+ENDIF(APPLE)

Added: code/branches/mac_osx/src/external/cmcrashreporter/read-me.txt
===================================================================
--- code/branches/mac_osx/src/external/cmcrashreporter/read-me.txt	                        (rev 0)
+++ code/branches/mac_osx/src/external/cmcrashreporter/read-me.txt	2011-04-18 17:14:18 UTC (rev 8259)
@@ -0,0 +1,64 @@
+		Read Me
+..:: -- -- -- -- -- -- -- -- -- -- ::..
+
+CMCrashReporter is a group of classes,
+special designed for Mac applications.
+
+CMCrashReporter collects crash-reports
+and send those to a server of the
+developer, in stead of Apple.
+
+CMCrashReporter is free and opensource.
+You can edit CMCrashReporter if wanted.
+If you find some bugs or have some feature requests,
+please email us at info at codingmammoth.com so we can
+update CMCrashReporter.
+
+		Credits
+..:: -- -- -- -- -- -- -- -- -- -- ::..
+
+CMCrashReporter is developed by
+Jelle De Laender - CodingMammoth.com
+
+Thanks to Pieter Omvlee (bohemiancoding.com)
+for the GUI-support.
+
+		Compability
+..:: -- -- -- -- -- -- -- -- -- -- ::..
+
+CMCrashReporter is compatible with
+Tiger, Leopard and Snow Leopard.
+
+Depending on your project, it's compatible for
+intel and PPC and GC (Garbage Collection).
+
+		Usage
+..:: -- -- -- -- -- -- -- -- -- -- ::..
+
+IMPORTANT: Link 'AddressBook.framework'
+(available on the Mac-computer self) to
+your project,
+since this CMCrashReporter is using this.
+
+1) Link the classes and the nib-file to your project.
+2) link the addressbook.framework to your project (available on Mac OS Library)
+3) At your main-class (preferable AppDelegate)
+		import CMCrashReporter.h and call [CMCrashReporter check].
+
+A good place to call this method is in -(void)applicationDidFinishLaunching: in your app delegate
+
+
+
+	App Settings (info.plist)
+..:: -- -- -- -- -- -- -- -- -- -- ::..
+
+CMSubmitURL - String: HTTP-Path to commit the logs to (as POST-Data)
+CMMaxReports (optional) - Int: max number of crashlogs to be sent
+
+	Settings (Preferences)
+..:: -- -- -- -- -- -- -- -- -- -- ::..
+It's possible to let your users have a choice to submit reports, or just ignore them.
+
+Create a NSCheckbox and link this to NSUserDefaults with 'CMCrashReporterIgnoreCrashes' as key.
+
+ CMCrashReporterIgnoreCrashes - BOOL: let the user ignore crashreports




More information about the Orxonox-commit mailing list