#Commands:
#r = start recording
#p = take picture
#0-8 = ISO modes 100-800, 0 is auto
#a = auto exposure
#n = night exposure
#+ = Start preview
#- = Stop preview


#Exposure Modes:
#- off
#- auto
#- night
#- nightpreview
#- backlight
#- spotlight
#- sports
#- snow
#- beach
#- verylong
#- fixedfps
#- antishake
#- fireworks

#White Balance Modes:
#- off
#- auto
#- sunlight
#- cloudy
#- shade
#- tungsten
#- flourescent
#- incandescent
#- flash
#- horizon

#1 = ISO 100
#2 = ISO 200
#4 = ISO 400
#8 = ISO 800

import time
import keyboard
from time import sleep
from picamera import PiCamera

camera = PiCamera()
camera.resolution = (1920, 1080)
camera.exposure_mode = 'auto'
camera.awb_mode = 'auto'
camera.iso = 0
camera.start_preview()

print("PiCorder V1.5")

def photo_take():
	print("Saving Photo")
	camera.resolution = (2592, 1944)
	sleep(2)
	camera.capture('/home/pi/Documents/test_files/testpic.png')
	print("Photo Saved")
	camera.resolution = (1920, 1080)	
	return	
			
def record_start():
	camera.resolution = (1920, 1080)
	sleep(2)
	camera.start_recording('/home/pi/Documents/test_files/button.h264')
	print("Recording Started")
	while True:
		if keyboard.is_pressed('r'):
			record_stop()
			print("stop")
			time.sleep(.125)
			break
		if keyboard.is_pressed('['):
			preview_stop()
		
		if keyboard.is_pressed(']'):
			preview_start()
		
		if keyboard.is_pressed('n'):
			exp_night()			
		
		if keyboard.is_pressed('a'):
			exp_auto()
		
		if keyboard.is_pressed('1'):
			iso_100()
			
		if keyboard.is_pressed('2'):
			iso_200()	
			
		if keyboard.is_pressed('4'):
			iso_400()		
			
		if keyboard.is_pressed('8'):
			iso_800()	
		
def record_stop():
	camera.stop_recording()
	print("Recording Stopped")
	
	
def end():
	camera.stop_preview()
	close()
	print("Killing Program")
	
def exp_night():
	camera.exposure_mode = "night"
	print("Night")
	time.sleep(.125)
	
def exp_auto():
	camera.exposure_mode = "auto"
	print("Auto")
	time.sleep(.125)
	
def exp_sports():
	camera.exposure_mode = 'sports'
	print("sports")
	time.sleep(.125)

def exp_beach():
	camera.exposure_mode = "beach"
	print("Beach")
	time.sleep(.125)

	
def preview_stop():
	camera.stop_preview()
	print("Preview Stopped")
	time.sleep(.125)
	
def preview_start():
	camera.start_preview()
	print("Preview Started")
	time.sleep(.125)
	
def iso_100():
	camera.iso = 100
	print("ISO 100")
	time.sleep(.125)
	
def iso_200():
	camera.iso = 200
	print("ISO 200")
	time.sleep(.125)

def iso_400():
	camera.iso = 400
	print("ISO 400")
	time.sleep(.125)
	
def iso_800():
	camera.iso = 800
	print("ISO 800")
	time.sleep(.125)
	
while True:
	try:
		if keyboard.is_pressed('r'):
			record_start()
			
		if keyboard.is_pressed('x'):
			camera.stop_preview()
			camera.close()
			print("Killing Program")
			time.sleep(2)
			break
			
		if keyboard.is_pressed('p'):
			photo_take()
		
		if keyboard.is_pressed('n'):
			exp_night()
		
		if keyboard.is_pressed('s'):
			exp_sports()
		
		if keyboard.is_pressed('b'):
			exp_beach()
		
			
		if keyboard.is_pressed('a'):
			exp_auto()
		
		if keyboard.is_pressed('['):
			preview_stop()
						
		if keyboard.is_pressed(']'):
			preview_start()
			
		if keyboard.is_pressed('1'):
			iso_100()
			
		if keyboard.is_pressed('2'):
			iso_200()	
			
		if keyboard.is_pressed('4'):
			iso_400()		
			
		if keyboard.is_pressed('8'):
			iso_800()	
			
	except:
		pass
