
import os, sys
from robofab import RoboFabError, version, numberVersion



class RFWorld:
	"""All parameters about platforms, versions and environments included in one object."""
	def __init__(self):
		self.mac = None
		self.pc = None
		self.platform = sys.platform
		self.applicationName = None # name of the application we're running in
		self.name = os.name
		self.version = version	# the robofab version
		self.numberVersion = numberVersion
		self._hasNagged = False
		self._willNag = True
		self._timedOut = False
		self._license = False
		self.run = True

		# get some platform information
		if self.name == 'mac' or self.name == 'posix':
			if self.platform == "darwin":
				self.mac = "X"
			else:
				self.mac = "pre-X"
		elif self.name == 'nt':
			# if you know more about PC & win stuff, add it here!
			self.pc = True
		else:
			raise RoboFabError, "We're running on an unknown platform."
		
		# collect versions
		self.pyVersion = sys.version[:3]
		self.inPython = False 
		self.flVersion = None
		self.inFontLab = False
		
		# are we in FontLab?
		try:
			from FL import fl
			self.applicationName = fl.filename
			self.inFontLab = True
			self.flVersion = fl.version
		except ImportError: pass
		if not self.inFontLab:
			self.inPython = True

		# see if we have W
		self.supportsW = False
		if not self.inFontLab:
			try:
				import W
				self.supportsW = True
			except ImportError:
				self.supportsW = False

		# see if we have DialogKit
		self.supportsDialogKit = False
			
	def __repr__(self):
		return "[Robofab is running on %s. Python version: %s, Mac stuff: %s, PC stuff: %s, FontLab stuff: %s, FLversion: %s]"%(self.platform, self.pyVersion, self.mac, self.pc, self.inFontLab, self.flVersion)

	def printMessage(self, msg):
		print 
		print '='*30
		print "RoboFab Public Announcement"
		print '-'*30
		for m in msg:
			print m
		print '-'*30
		print 
		

world = RFWorld()

lineBreak = os.linesep

if world.inFontLab:
	from robofab.interface.all.dialogs import SelectFont, SelectGlyph
	from robofab.objects.objectsFL import CurrentFont, CurrentGlyph, RFont, RGlyph, OpenFont, NewFont, AllFonts
	lineBreak = "\n"
	
elif world.inPython:
	from robofab.objects.objectsRF import CurrentFont, CurrentGlyph, RFont, RGlyph, OpenFont, NewFont, AllFonts



if __name__ == "__main__":
	f = RFWorld()
	print f


import os, sys
from robofab import RoboFabError, version, numberVersion



class RFWorld:
	"""All parameters about platforms, versions and environments included in one object."""
	def __init__(self):
		self.mac = None
		self.pc = None
		self.platform = sys.platform
		self.applicationName = None # name of the application we're running in
		self.name = os.name
		self.version = version	# the robofab version
		self.numberVersion = numberVersion
		self._hasNagged = False
		self._willNag = True
		self._timedOut = False
		self._license = False
		self.run = True

		# get some platform information
		if self.name == 'mac' or self.name == 'posix':
			if self.platform == "darwin":
				self.mac = "X"
			else:
				self.mac = "pre-X"
		elif self.name == 'nt':
			# if you know more about PC & win stuff, add it here!
			self.pc = True
		else:
			raise RoboFabError, "We're running on an unknown platform."
		
		# collect versions
		self.pyVersion = sys.version[:3]
		self.inPython = False 
		self.inFontLab = False
		self.flVersion = None
		self.inGlyphsApp = False
		self.glyphsAppVersion = None

		# are we in FontLab?
		try:
			from FL import fl
			self.applicationName = fl.filename
			self.inFontLab = True
			self.flVersion = fl.version
		except ImportError: pass
		# are we in Glyphs?
		try:
			import objectsGS
			from AppKit import NSBundle
			bundle = NSBundle.mainBundle()
			self.applicationName = bundle.infoDictionary()["CFBundleName"]
			self.inGlyphsApp = True
			self.glyphsAppVersion = bundle.infoDictionary()["CFBundleVersion"]
		except ImportError: pass
		# we are in NoneLab
		if not self.inFontLab:
			self.inPython = True

		# see if we have W
		self.supportsW = False
		if not self.inFontLab:
			try:
				import W
				self.supportsW = True
			except ImportError:
				self.supportsW = False

		# see if we have DialogKit
		self.supportsDialogKit = False

	def __repr__(self):
		return "[Robofab is running on %s. Python version: %s, Mac stuff: %s, PC stuff: %s, FontLab stuff: %s, FLversion: %s]"%(self.platform, self.pyVersion, self.mac, self.pc, self.inFontLab, self.flVersion)

	def printMessage(self, msg):
		print 
		print '='*30
		print "RoboFab Public Announcement"
		print '-'*30
		for m in msg:
			print m
		print '-'*30
		print 

world = RFWorld()

lineBreak = os.linesep

if world.inFontLab:
	from robofab.interface.all.dialogs import SelectFont, SelectGlyph
	from robofab.objects.objectsFL import CurrentFont, CurrentGlyph, RFont, RGlyph, OpenFont, NewFont, AllFonts
	lineBreak = "\n"
elif world.inGlyphsApp:
	from robofab.objects.objectsFL import CurrentFont, CurrentGlyph, RFont, RGlyph, OpenFont, NewFont, AllFonts
elif world.inPython:
	from robofab.objects.objectsRF import CurrentFont, CurrentGlyph, RFont, RGlyph, OpenFont, NewFont, AllFonts



if __name__ == "__main__":
	f = RFWorld()
	print f

Add support for Glyphs.