#!/usr/bin/python

import sys

sys.path.append("/usr/lib/eroaster")

from os import environ, popen
from constants import title, version, year, True, False
from main import Application
from tools import striplist
from string import find

if not environ.has_key("EROASTERINSTALL"):                  # when installing eroaster, do not fire up the interface

    mkisofs = False
    readcd = False
    cdrecord = False
    isoinfo = False
    cdda2wav = False
    
    sys.stdout.write("\n%s %s (c) %s by Martin Preishuber\n\n" % (title, version, year))

    # Checking username
    sys.stdout.write("Checking username ... ")
    uname = environ["USER"]
    sys.stdout.write("%s" % uname)
    if (uname != "root"):
        sys.stdout.write(" (you may want to be root)\n")
    else:
        sys.stdout.write("\n")

    # Check for mkisofs
    sys.stdout.write("Checking for required programs: ")
    sys.stdout.write("mkisofs")
    pipe = popen("/usr/bin/which mkisofs 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no mkisofs in") == -1):
        mkisofs = True

    # Check for cdrecord
    sys.stdout.write(" cdrecord")
    pipe = popen("/usr/bin/which cdrecord 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no cdrecord in") == -1):
        cdrecord = True

    # Check for isoinfo
    sys.stdout.write(" isoinfo")
    pipe = popen("/usr/bin/which isoinfo 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no isoinfo in") == -1):
        isoinfo = True

    # Check for readcd
    sys.stdout.write(" readcd")
    pipe = popen("/usr/bin/which readcd 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no readcd in") == -1):
        readcd = True

    # Check for cdda2wav
    sys.stdout.write(" cdda2wav")
    pipe = popen("/usr/bin/which cdda2wav 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no cdda2wav in") == -1):
        cdda2wav = True

    sys.stdout.write("\n")

    # Check wether mkisofs supports -gui
    sys.stdout.write("Checking, wether mkisofs supports -gui or not: ")
    pipe = popen("mkisofs 2>&1 | grep gui")
    output = striplist(pipe.readlines())
    pipe.close()

    if (len(output) == 0):
        mkisofssupportsgui = False
        sys.stdout.write("no\n")
    else:
        mkisofssupportsgui = True
        sys.stdout.write("yes\n")

    # Check for additional programs
    sys.stdout.write("Checking for additional programs: ")

    # Check for mpg123ss
    sys.stdout.write("mpg123 ")
    pipe = popen("/usr/bin/which mpg123 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no mpg123 in") != -1):
        sys.stdout.write("(not found) ")
        
    # Check for sox
    sys.stdout.write("sox ")
    pipe = popen("/usr/bin/which sox 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no sox in") != -1):
        sys.stdout.write("(not found) ")

    # Check for xmms
    sys.stdout.write("xmms ")
    pipe = popen("/usr/bin/which xmms 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no xmms in") != -1):
        sys.stdout.write("(not found) ")

    # Check for normalize
    sys.stdout.write("normalize ")
    pipe = popen("/usr/bin/which normalize 2>&1")
    output = striplist(pipe.readlines())
    pipe.close()
    if (find(output[0], "no normalize in") != -1):
        sys.stdout.write("(not found) ")

    sys.stdout.write("\n\n")

    if (mkisofs == False) or (cdrecord == False) or (isoinfo == False) or (readcd == False) or (cdda2wav == False):
        sys.stdout.write("The following programm(s) couldn't be found: ")
        if (mkisofs == False):
            sys.stdout.write("mkisofs ")
        if (cdrecord == False):
            sys.stdout.write("cdrecord ")
        if (isoinfo == False):
            sys.stdout.write("isoinfo ")
        if (readcd == False):
            sys.stdout.write("readcd ")
        if (cdda2wav == False):
            sys.stdout.write("cdda2wav ")
        sys.stdout.write("\n\n")
        sys.stdout.write("The necessary CD-R tools can be found at:\n\n")
        sys.stdout.write("    ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/\n\n")
        sys.stdout.write("Please install it before using ERoaster (isoinfo is part of mkisofs, readcd\n")
        sys.stdout.write("part of cdrecod)\n\n")
        sys.exit(1)
        
    # Start the app
    app = Application(mkisofssupportsgui)
    app.main()
