#!/usr/bin/env python
from snack import *
from xml.dom import minidom
from xml.dom.ext import PrettyPrint
import sys

sys.path.append('../interface/')
sys.path.append('../text/')

import ri_newt
import ri_data

install_xml = '/var/install/install.xml'

class Username(ri_newt.Screen):
	def __init__(self):
		ri_newt.Screen.__init__(self, name='username',title='StateGrid custom install')
		ri_newt.Screen.screen.pushHelpLine('<Tab> moves; 	<Space> selects; 	<Enter> activates buttons')

		self.text = 'This username will use as State Grid user. Can not be a system user or reserver user. Please enter username:'
		ri_newt.Screen.widget_textboxreflowed(80, self.text)
		ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])

	def set_data(self):
		ri_newt.Screen.widget_entry(75, text='')
		s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
		if s == 0:
			ri_data.StateGrid.username = ri_newt.Screen.entry.value()
		return s

class HomeDirectory(ri_newt.Screen):
	def __init__(self):
		ri_newt.Screen.__init__(self, name='home_dir',title='StateGrid custom install')
		ri_newt.Screen.screen.pushHelpLine('<Tab> moves; 	<Space> selects; 	<Enter> activates buttons')

		self.text = 'This directory will use as State Grid user home directory. Can not be /home/{sysadmin,netadmin,secadmin,audadmin}.\n\nPlease enter home directory:'
		ri_newt.Screen.widget_textboxreflowed(80, self.text)
		ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])

	def set_data(self):
		ri_newt.Screen.widget_entry(75, text='')
		s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
		if s == 0:
			ri_data.StateGrid.home_dir = ri_newt.Screen.entry.value()
		return s

class Shell(ri_newt.Screen):
	def __init__(self):
		ri_newt.Screen.__init__(self, name='shell',title='StateGrid custom install')
		ri_newt.Screen.screen.pushHelpLine('<Tab> moves; 	<Space> selects; 	<Enter> activates buttons')

		self.text = 'This shell will use as State Grid user shell, Please enter user shell:'
		ri_newt.Screen.widget_textboxreflowed(80, self.text)
		ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])

	def set_data(self):
		ri_newt.Screen.widget_entry(75, text='')
		s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
		if s == 0:
			ri_data.StateGrid.shell = ri_newt.Screen.entry.value()

if __name__ ==  "__main__":
	Username()
	ri_newt.Screen.dict['username'].set_data()
	HomeDirectory()
	ri_newt.Screen.dict['home_dir'].set_data()
	Shell()
	ri_newt.Screen.dict['shell'].set_data()

	xmldoc = minidom.parse(install_xml)
	root = xmldoc.firstChild
	f = file(install_xml,'w')
	ri_data.StateGrid.to_xml(xmldoc, root)
	PrettyPrint(xmldoc, f)
	f.close()

	ri_newt.Screen.screen.finish()








