view dstep/foundation/NSLocale.d @ 14:89f3c3ef1fd2

Added the Foundation framework
author Jacob Carlborg <doob@me.com>
date Mon, 03 Aug 2009 15:23:15 +0200
parents
children 19885b43130e
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Aug 3, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.foundation.NSLocale;

import dstep.foundation.NSArray;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc : id;

import bindings = dstep.foundation.NSLocale_bindings;

const NSString NSCurrentLocaleDidChangeNotification;
const NSString NSLocaleIdentifier;
const NSString NSLocaleLanguageCode;
const NSString NSLocaleCountryCode;
const NSString NSLocaleScriptCode;
const NSString NSLocaleVariantCode;
const NSString NSLocaleExemplarCharacterSet;
const NSString NSLocaleCalendar;
const NSString NSLocaleCollationIdentifier;
const NSString NSLocaleUsesMetricSystem;
const NSString NSLocaleMeasurementSystem;
const NSString NSLocaleDecimalSeparator;
const NSString NSLocaleGroupingSeparator;
const NSString NSLocaleCurrencySymbol;
const NSString NSLocaleCurrencyCode;
const NSString NSGregorianCalendar;
const NSString NSBuddhistCalendar;
const NSString NSChineseCalendar;
const NSString NSHebrewCalendar;
const NSString NSIslamicCalendar;
const NSString NSIslamicCivilCalendar;
const NSString NSJapaneseCalendar;

static this ()
{
	NSCurrentLocaleDidChangeNotification = new NSString(bindings.NSCurrentLocaleDidChangeNotification);
	NSLocaleIdentifier = new NSString(bindings.NSLocaleIdentifier);
	NSLocaleLanguageCode = new NSString(bindings.NSLocaleLanguageCode);
	NSLocaleCountryCode = new NSString(bindings.NSLocaleCountryCode);
	NSLocaleScriptCode = new NSString(bindings.NSLocaleScriptCode);
	NSLocaleVariantCode = new NSString(bindings.NSLocaleVariantCode);
	NSLocaleExemplarCharacterSet = new NSString(bindings.NSLocaleExemplarCharacterSet);
	NSLocaleCalendar = new NSString(bindings.NSLocaleCalendar);
	NSLocaleCollationIdentifier = new NSString(bindings.NSLocaleCollationIdentifier);
	NSLocaleUsesMetricSystem = new NSString(bindings.NSLocaleUsesMetricSystem);
	NSLocaleMeasurementSystem = new NSString(bindings.NSLocaleMeasurementSystem);
	NSLocaleDecimalSeparator = new NSString(bindings.NSLocaleDecimalSeparator);
	NSLocaleGroupingSeparator = new NSString(bindings.NSLocaleGroupingSeparator);
	NSLocaleCurrencySymbol = new NSString(bindings.NSLocaleCurrencySymbol);
	NSLocaleCurrencyCode = new NSString(bindings.NSLocaleCurrencyCode);
	NSGregorianCalendar = new NSString(bindings.NSGregorianCalendar);
	NSBuddhistCalendar = new NSString(bindings.NSBuddhistCalendar);
	NSChineseCalendar = new NSString(bindings.NSChineseCalendar);
	NSHebrewCalendar = new NSString(bindings.NSHebrewCalendar);
	NSIslamicCalendar = new NSString(bindings.NSIslamicCalendar);
	NSIslamicCivilCalendar = new NSString(bindings.NSIslamicCivilCalendar);
	NSJapaneseCalendar = new NSString(bindings.NSJapaneseCalendar);
}

class NSLocale : NSObject, INSCopying, INSCoding
{
	mixin ObjcWrap;
	mixin TNSLocaleCreation;
	mixin TNSLocaleGeneralInfo;
	mixin TNSExtendedLocale;

	Object objectForKey (Object key)
	{
		return invokeObjcSelf!(Object, "objectForKey:", Object)(key);
	}

	NSString displayNameForKey (Object key, Object value)
	{
		return invokeObjcSelf!(NSString, "displayNameForKey:value:", Object, Object)(key, value);
	}

	Object copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);
	}

	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}

	Object initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder);
	}

	this (NSCoder aDecoder)
	{
		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
		id result = Bridge.invokeObjcMethod!(id, "initWithCoder:", NSCoder)(objcObject, aDecoder);

		if (result)
			objcObject = ret;

		dObject = this;
	}
}

template TNSLocaleCreation ()
{
	static Object systemLocale ()
	{
		return invokeObjcSelfClass!(Object, "systemLocale");
	}

	static Object currentLocale ()
	{
		return invokeObjcSelfClass!(Object, "currentLocale");
	}

	static Object autoupdatingCurrentLocale ()
	{
		return invokeObjcSelfClass!(Object, "autoupdatingCurrentLocale");
	}

	Object initWithLocaleIdentifier (NSString string)
	{
		return invokeObjcSelf!(Object, "initWithLocaleIdentifier:", NSString)(string);
	}

	this (NSString string)
	{
		objcObject = Bridge.invokeObjcClassMethod!(id, "alloc")(objcClass);
		id result = Bridge.invokeObjcMethod!(id, "initWithLocaleIdentifier:", NSString)(objcObject, string);

		if (result)
			objcObject = ret;

		dObject = this;
	}
}

template TNSLocaleGeneralInfo ()
{
	static NSArray availableLocaleIdentifiers ()
	{
		return invokeObjcSelfClass!(NSArray, "availableLocaleIdentifiers");
	}

	static NSArray ISOLanguageCodes ()
	{
		return invokeObjcSelfClass!(NSArray, "ISOLanguageCodes");
	}

	static NSArray ISOCountryCodes ()
	{
		return invokeObjcSelfClass!(NSArray, "ISOCountryCodes");
	}

	static NSArray ISOCurrencyCodes ()
	{
		return invokeObjcSelfClass!(NSArray, "ISOCurrencyCodes");
	}

	static NSArray commonISOCurrencyCodes ()
	{
		return invokeObjcSelfClass!(NSArray, "commonISOCurrencyCodes");
	}

	static NSArray preferredLanguages ()
	{
		return invokeObjcSelfClass!(NSArray, "preferredLanguages");
	}

	static NSDictionary componentsFromLocaleIdentifier (NSString string)
	{
		return invokeObjcSelfClass!(NSDictionary, "componentsFromLocaleIdentifier:", NSString)(string);
	}

	static NSString localeIdentifierFromComponents (NSDictionary dict)
	{
		return invokeObjcSelfClass!(NSString, "localeIdentifierFromComponents:", NSDictionary)(dict);
	}

	static NSString canonicalLocaleIdentifierFromString (NSString string)
	{
		return invokeObjcSelfClass!(NSString, "canonicalLocaleIdentifierFromString:", NSString)(string);
	}
}

template TNSExtendedLocale ()
{
	NSString localeIdentifier ()
	{
		return invokeObjcSelf!(NSString, "localeIdentifier");
	}
}