summaryrefslogtreecommitdiff
path: root/pkg/osx/LauncherManager.m
diff options
context:
space:
mode:
authorSimon Howard2010-01-04 22:01:32 +0000
committerSimon Howard2010-01-04 22:01:32 +0000
commit6921f30a44e0bdf1c3a2f8982e4a8cd290c22462 (patch)
treee597201e79368095e58e7ea753eea76906db1c03 /pkg/osx/LauncherManager.m
parent9b0b0629e02deba1788d4a4e190b31977f7c0b1f (diff)
downloadchocolate-doom-6921f30a44e0bdf1c3a2f8982e4a8cd290c22462.tar.gz
chocolate-doom-6921f30a44e0bdf1c3a2f8982e4a8cd290c22462.tar.bz2
chocolate-doom-6921f30a44e0bdf1c3a2f8982e4a8cd290c22462.zip
Import OS X launcher code to trunk.
Subversion-branch: /trunk/chocolate-doom Subversion-revision: 1784
Diffstat (limited to 'pkg/osx/LauncherManager.m')
-rw-r--r--pkg/osx/LauncherManager.m98
1 files changed, 98 insertions, 0 deletions
diff --git a/pkg/osx/LauncherManager.m b/pkg/osx/LauncherManager.m
new file mode 100644
index 00000000..cda7b3e7
--- /dev/null
+++ b/pkg/osx/LauncherManager.m
@@ -0,0 +1,98 @@
+/* ... */
+//-----------------------------------------------------------------------------
+//
+// Copyright(C) 2009 Simon Howard
+//
+// 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., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA.
+//
+//-----------------------------------------------------------------------------
+
+#include <AppKit/AppKit.h>
+#include "Execute.h"
+#include "LauncherManager.h"
+#include "config.h"
+
+@implementation LauncherManager
+
+// Save configuration. Invoked when we launch the game or quit.
+
+- (void) saveConfig
+{
+ NSUserDefaults *defaults;
+
+ // Save IWAD configuration and selected IWAD.
+
+ [self->iwadController saveConfig];
+
+ // Save command line arguments.
+
+ defaults = [NSUserDefaults standardUserDefaults];
+ [defaults setObject:[self->commandLineArguments stringValue]
+ forKey:@"command_line_args"];
+}
+
+// Load configuration, invoked on startup.
+
+- (void) setConfig
+{
+ NSUserDefaults *defaults;
+ NSString *args;
+
+ defaults = [NSUserDefaults standardUserDefaults];
+
+ args = [defaults stringForKey:@"command_line_args"];
+
+ if (args != nil)
+ {
+ [self->commandLineArguments setStringValue:args];
+ }
+}
+
+- (void) launch: (id)sender
+{
+ NSString *iwad;
+ NSString *args;
+
+ [self saveConfig];
+
+ iwad = [self->iwadController getIWADLocation];
+ args = [self->commandLineArguments stringValue];
+
+ if (iwad != nil)
+ {
+ ExecuteProgram(PACKAGE_TARNAME, [iwad UTF8String],
+ [args UTF8String]);
+ [NSApp terminate:sender];
+ }
+}
+
+- (void) runSetup: (id)sender
+{
+ [self saveConfig];
+
+ [self->iwadController setEnvironment];
+ ExecuteProgram("chocolate-setup", NULL, NULL);
+}
+
+- (void) awakeFromNib
+{
+ [self->packageLabel setStringValue: @PACKAGE_STRING];
+ [self->launcherWindow setTitle: @PACKAGE_NAME " Launcher"];
+ [self setConfig];
+}
+
+@end
+