#!@PYTHON@
import sys
import getopt
import subprocess
from sys import argv
try:
	import zbar
except ImportError as e:
	print 'Cannot run gnunet-qr, please install zbar-python'
	sys.exit (1)

def help ():
 print 'gnunet-qr\n\
Scan a QR code using a video device and import\n\
Arguments mandatory for long options are also mandatory for short options.\n\
  -c, --config=FILENAME      use configuration file FILENAME\n\
  -d, --device=DEVICE        use device DEVICE\n\
  -s, --silent               do not show preview windows\n\
  -h, --help                 print this help\n\
  -v, --verbose							 be verbose\n\
Report bugs to gnunet-developers@gnu.org.\n\
GNUnet home page: http://www.gnu.org/software/gnunet/\n\
General help using GNU software: http://www.gnu.org/gethelp/'


if __name__ == '__main__':
	configuration = ''
	device = '/dev/video0'
	url = ''
	verbose = False	
	silent = False
	# Parse arguments
	try:
		opts, args = getopt.gnu_getopt(sys.argv[1:], "c:hd:sv", ["config","help", "device","silent","verbose"])
	except getopt.GetoptError as e:
		help ()
		print str (e)
		exit (1)
	for o,a in opts:
		if o in ("-h", "--help"):
			help ()            
			sys.exit (0)
		elif o in ("-c", "--config"):
			configuration = a
		elif o in ("-d", "--device"):
			device = a
		elif o in ("-s", "--silent"):
			silent = True
		elif o in ("-v", "--verbose"):
			verbose = True			
	if (True == verbose):
		print 'Initializing'
	# create a Processor
	proc = zbar.Processor()

	# configure the Processor
	proc.parse_config('enable')

	# initialize the Processor
	try:
		if (True == verbose):
			print 'Opening video device ' + device
		proc.init(device)
	except Exception as e:
		print 'Failed to open device ' + device
		exit (1)
	
	# enable the preview window
	#if (True == silent):
	#	proc.visible = True
	#else:
	#		proc.visible = False
	
	proc.visible = True
	# read at least one barcode (or until window closed)
	try:
		if (True == verbose):
			print 'Capturing'
		proc.process_one()
	except Exception as e:
		# Window was closed without finding code
		exit (1)
	
	# hide the preview window
	proc.visible = False
	
	# extract results
	for symbol in proc.results:
		# do something useful with results
		if (True == verbose):
			print 'Found ', symbol.type, ' symbol ', '"%s"' % symbol.data
		args = list()
		args.append("gnunet-uri")
		if (configuration != ''):
			args.append (str("-c " + str(configuration)))
		args.append (str(symbol.data))
		cmd = ''
		for a in args:
			cmd += " " + str(a)
		if (verbose):
			print 'Running `' + cmd +'`'
		res=subprocess.call(args)
		if (0 != res):
			print 'Failed to add URI ' + str(symbol.data)
		else: 
			print 'Added URI ' + str(symbol.data)
		exit (res)
	exit (1)
