summaryrefslogtreecommitdiff
path: root/pkg/osx/IWADController.m
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/osx/IWADController.m')
-rw-r--r--pkg/osx/IWADController.m347
1 files changed, 0 insertions, 347 deletions
diff --git a/pkg/osx/IWADController.m b/pkg/osx/IWADController.m
deleted file mode 100644
index 3c596850..00000000
--- a/pkg/osx/IWADController.m
+++ /dev/null
@@ -1,347 +0,0 @@
-/* ... */
-//-----------------------------------------------------------------------------
-//
-// 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 <stdlib.h>
-#include <string.h>
-#include <AppKit/AppKit.h>
-#include "IWADController.h"
-#include "IWADLocation.h"
-
-typedef enum
-{
- IWAD_DOOM1,
- IWAD_DOOM2,
- IWAD_TNT,
- IWAD_PLUTONIA,
- IWAD_CHEX,
- NUM_IWAD_TYPES
-} IWAD;
-
-static NSString *IWADLabels[NUM_IWAD_TYPES] =
-{
- @"Doom",
- @"Doom II: Hell on Earth",
- @"Final Doom: TNT: Evilution",
- @"Final Doom: Plutonia Experiment",
- @"Chex Quest"
-};
-
-static NSString *IWADFilenames[NUM_IWAD_TYPES + 1] =
-{
- @"doom.wad",
- @"doom2.wad",
- @"tnt.wad",
- @"plutonia.wad",
- @"chex.wad",
- @"undefined"
-};
-
-@implementation IWADController
-
-- (void) getIWADList: (IWADLocation **) iwadList
-{
- iwadList[IWAD_DOOM1] = self->doom1;
- iwadList[IWAD_DOOM2] = self->doom2;
- iwadList[IWAD_TNT] = self->tnt;
- iwadList[IWAD_PLUTONIA] = self->plutonia;
- iwadList[IWAD_CHEX] = self->chex;
-}
-
-- (IWAD) getSelectedIWAD
-{
- unsigned int i;
-
- for (i=0; i<NUM_IWAD_TYPES; ++i)
- {
- if ([self->iwadSelector titleOfSelectedItem] == IWADLabels[i])
- {
- return i;
- }
- }
-
- return NUM_IWAD_TYPES;
-}
-
-// Get the location of the selected IWAD.
-
-- (NSString *) getIWADLocation
-{
- IWAD selectedIWAD;
- IWADLocation *iwadList[NUM_IWAD_TYPES];
-
- selectedIWAD = [self getSelectedIWAD];
-
- if (selectedIWAD == NUM_IWAD_TYPES)
- {
- return nil;
- }
- else
- {
- [self getIWADList: iwadList];
-
- return [iwadList[selectedIWAD] getLocation];
- }
-}
-
-- (void) setIWADConfig
-{
- IWADLocation *iwadList[NUM_IWAD_TYPES];
- NSUserDefaults *defaults;
- NSString *key;
- NSString *value;
- unsigned int i;
-
- [self getIWADList: iwadList];
-
- // Load IWAD filename paths
-
- defaults = [NSUserDefaults standardUserDefaults];
-
- for (i=0; i<NUM_IWAD_TYPES; ++i)
- {
- key = IWADFilenames[i];
- value = [defaults stringForKey:key];
-
- if (value != nil)
- {
- [iwadList[i] setLocation:value];
- }
- }
-}
-
-// On startup, set the selected item in the IWAD dropdown
-
-- (void) setDropdownSelection
-{
- NSUserDefaults *defaults;
- NSString *selected;
- unsigned int i;
-
- defaults = [NSUserDefaults standardUserDefaults];
- selected = [defaults stringForKey: @"selected_iwad"];
-
- if (selected == nil)
- {
- return;
- }
-
- // Find this IWAD in the filenames list, and select it.
-
- for (i=0; i<NUM_IWAD_TYPES; ++i)
- {
- if ([selected isEqualToString:IWADFilenames[i]])
- {
- [self->iwadSelector selectItemWithTitle:IWADLabels[i]];
- break;
- }
- }
-}
-
-// Set the dropdown list to include an entry for each IWAD that has
-// been configured. Returns true if at least one IWAD is configured.
-
-- (BOOL) setDropdownList
-{
- IWADLocation *iwadList[NUM_IWAD_TYPES];
- BOOL have_wads;
- id location;
- unsigned int i;
- unsigned int enabled_wads;
-
- // Build the new list.
-
- [self getIWADList: iwadList];
- [self->iwadSelector removeAllItems];
-
- enabled_wads = 0;
-
- for (i=0; i<NUM_IWAD_TYPES; ++i)
- {
- location = [iwadList[i] getLocation];
-
- if (location != nil && [location length] > 0)
- {
- [self->iwadSelector addItemWithTitle: IWADLabels[i]];
- ++enabled_wads;
- }
- }
-
- // Enable/disable the dropdown depending on whether there
- // were any configured IWADs.
-
- have_wads = enabled_wads > 0;
- [self->iwadSelector setEnabled: have_wads];
-
- // Restore the old selection.
-
- [self setDropdownSelection];
-
- return have_wads;
-}
-
-- (void) saveConfig
-{
- IWADLocation *iwadList[NUM_IWAD_TYPES];
- IWAD selectedIWAD;
- NSUserDefaults *defaults;
- NSString *key;
- NSString *value;
- unsigned int i;
-
- [self getIWADList: iwadList];
-
- // Store all IWAD locations to user defaults.
-
- defaults = [NSUserDefaults standardUserDefaults];
-
- for (i=0; i<NUM_IWAD_TYPES; ++i)
- {
- key = IWADFilenames[i];
- value = [iwadList[i] getLocation];
-
- [defaults setObject:value forKey:key];
- }
-
- // Save currently selected IWAD.
-
- selectedIWAD = [self getSelectedIWAD];
- [defaults setObject:IWADFilenames[selectedIWAD]
- forKey:@"selected_iwad"];
-}
-
-// Callback method invoked when the configuration button in the main
-// window is clicked.
-
-- (void) openConfigWindow: (id)sender
-{
- if (![self->configWindow isVisible])
- {
- [self->configWindow makeKeyAndOrderFront: sender];
- }
-}
-
-// Callback method invoked when the close button is clicked.
-
-- (void) closeConfigWindow: (id)sender
-{
- [self->configWindow orderOut: sender];
- [self saveConfig];
- [self setDropdownList];
-}
-
-- (void) awakeFromNib
-{
- [self->configWindow center];
-
- // Set configuration for all IWADs from configuration file.
-
- [self setIWADConfig];
-
- // Populate the dropdown IWAD list.
-
- if ([self setDropdownList])
- {
- [self setDropdownSelection];
- }
-}
-
-// Generate a value to set for the DOOMWADPATH environment variable
-// that contains each of the configured IWAD files.
-
-- (char *) doomWadPath
-{
- IWADLocation *iwadList[NUM_IWAD_TYPES];
- NSString *location;
- unsigned int i;
- unsigned int len;
- BOOL first;
- char *env;
-
- [self getIWADList: iwadList];
-
- // Calculate length of environment string.
-
- len = 0;
-
- for (i=0; i<NUM_IWAD_TYPES; ++i)
- {
- location = [iwadList[i] getLocation];
-
- if (location != nil && [location length] > 0)
- {
- len += [location length] + 1;
- }
- }
-
- // Build string.
-
- env = malloc(len);
- strcpy(env, "");
-
- first = YES;
-
- for (i=0; i<NUM_IWAD_TYPES; ++i)
- {
- location = [iwadList[i] getLocation];
-
- if (location != nil && [location length] > 0)
- {
- if (!first)
- {
- strcat(env, ":");
- }
-
- strcat(env, [location UTF8String]);
- first = NO;
- }
- }
-
- return env;
-}
-
-// Set the DOOMWADPATH environment variable to contain the path to each
-// of the configured IWAD files.
-
-- (void) setEnvironment
-{
- char *doomwadpath;
- char *env;
-
- // Get the value for the path.
-
- doomwadpath = [self doomWadPath];
-
- env = malloc(strlen(doomwadpath) + 15);
-
- sprintf(env, "DOOMWADPATH=%s", doomwadpath);
-
- free(doomwadpath);
-
- // Load into environment:
-
- putenv(env);
-
- //free(env);
-}
-
-@end
-