#!/usr/local/bin/python
""" This modul is for the unified appearance.

error and message use write for handling several-line-string
menu and ask is independent from write

They all get the strings from nationalized lang module (lang_en, lang_hu)
"""
import string
_string = string
del string

import lang
 
try:
  command = 'import lang_%s' % lang.lang
  exec command
  command = 'lang = lang_%s' % lang.lang
  exec command
except ImportError:
  import lang_en
  lang = lang_en
  del lang_en

# try:
#   command = 'import setup_%s' % lang.lang
#   exec command
#   command = 'setup = setup_%s' % lang.lang
#   exec command
# except ImportError:
#   import setup_en
#   setup = setup_en
#   del setup_en

def write(string, arguments=None,
	  starting_characters=''):
  if arguments:
    string = string % arguments

  rows = _string.split(string, '\n')
  if not rows[-1]:
    rows.pop()

  n = 0
  for row in rows:
    row = '%s %s' % (starting_characters, row)
    rows[n] = row
    n= n + 1

  #rows[-1]

  for row in rows:
    print row

def error(error_code, arguments=None):
  write(lang.err[error_code], arguments, '!!!')

def message(message_code, arguments=None):
  write(lang.mesg[message_code], arguments, '>>>')


def ask_exit(next_to_do):
  """ It asks wether to continue or not """
  print '*'*30
  print "%s %s." % (lang.mesg['next'], todo[next_to_do])
  answer = 'not valid value'
  while answer != '' and answer not in keys['quit']:
    answer=raw_input(ask['enter'])
    print
  if answer == '':
    cls()
    
    print '******** %s.' % todo[next_to_do]
    return  0
  if answer in keys['quit']:
    return  1



def menu():
  menu_list = lang.menu_list
	  
  n=1
  for item in menu_list:
    print ' %2d. %s.' % (n, item[1])
    n = n + 1
  n = input(ask('choice'))
  cls()
  return menu_list[n-1][0]

def ask(ask_code, arguments = None):
  if arguments:
    string = lang.ask[ask_code] % arguments
  else:
    string = lang.ask[ask_code]
  string = "%s " % string
  return string  

def test():
  write ('error\n in row %d\n', 15, '!!!')
  print
  error('bad code', 77)
  print
  message('file_written', "testpaper.tex")
  print
  message('with solution')
  print
  menu()

if __name__ == '__main__':
  test()
