#!/usr/bin/python
#!/usr/bin/env python
"""
Copyright 2009-2012 Free Software Foundation, Inc.
This file is part of GNU Radio

GNU Radio Companion 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.

GNU Radio Companion 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
"""

import os
if os.environ.get('GR_DONT_LOAD_PREFS'):
       del os.environ['GR_DONT_LOAD_PREFS']
import pygtk
pygtk.require('2.0')
import gtk

try: from gnuradio import gr
except ImportError, e:
	d = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_CLOSE, message_format="""
Cannot import gnuradio.

Is the python path environment variable set correctly?
	All OS: PYTHONPATH

Is the library path environment variable set correctly?
	Linux: LD_LIBRARY_PATH
	Windows: PATH
	MacOSX: DYLD_LIBRARY_PATH
""")
	d.set_title(str(e))
	d.run()
	exit(-1)

from optparse import OptionParser

def compile_one(file_name, output_dir):
       """ Directly compiles file_name into output_dir without invoking GUI """
       if output_dir is None:
               output_dir = './'
               if "GRC_OUTPUT_DIRECTORY" in os.environ:
                       output_dir = os.environ["GRC_OUTPUT_DIRECTORY"]
       print "Compiling " + file_name + " to " + output_dir
       platform  = Platform()
       state     = platform.parse_flow_graph(file_name)
       flowgraph = platform.get_new_flow_graph()
       flowgraph.import_data(state)
       flowgraph.validate()
       generator = platform.get_generator()(flowgraph, output_dir)
       generator.write()

if __name__ == "__main__":
	usage = 'usage: %prog [options] [saved flow graphs]'
	version = """
GNU Radio Companion %s

This program is part of GNU Radio
GRC comes with ABSOLUTELY NO WARRANTY.
This is free software,
and you are welcome to redistribute it.
"""%gr.version()
	parser = OptionParser(usage=usage, version=version)
        parser.add_option("-c", "--compile", action="store_true", default=False,
                          help="Only compile the GRC file without invoking the GUI")
        parser.add_option("-d", "--output-dir", type="string", default=None,
                         help="Output path for the Python file")
	(options, args) = parser.parse_args()
	from gnuradio.grc.python.Platform import Platform
        if options.compile:
		compile_one(args[0], options.output_dir)
        else:
		from gnuradio.grc.gui.ActionHandler import ActionHandler
                #setup icon using icon theme
		try: gtk.window_set_default_icon(gtk.IconTheme().load_icon('gnuradio-grc', 256, 0))
		except: pass
		ActionHandler(args, Platform())
