#!/usr/local/bin/python2.7
# -*- coding: <utf-8> -*-

###########################################################################
#    Copyright (C) 2003, 2004, 2005 by Wido Depping                                      
#    <widod@users.sourceforge.net>                                                             
#
# Copyright: See COPYING file that comes with this distribution
#
###########################################################################


import sys
import traceback
import threading
import time
import StringIO
from qt import *

import environment
from base.gui.MainWin import MainWin
from base.utils.backend.LogObject import LogObject
import environment
import os

def startApplication():
    #Check if configuration directory exists. If not, create it.
    configPrefix = os.path.join(environment.userHomeDir, ".luma")
    if not os.path.exists(configPrefix):
        os.mkdir(configPrefix)
    
    iconPath = os.path.join(environment.lumaInstallationPrefix, "share", "luma", "icons")
    app = QApplication(sys.argv)
    
    logoPixmap = QPixmap(os.path.join(iconPath, "luma-250.png"))
    splash = QSplashScreen(logoPixmap)
    splash.show()
    
    gui = MainWin(None)
    QObject.connect(app, SIGNAL('lastWindowClosed()'), gui.quitApplication)
    
    
    app.setMainWidget(gui)
    gui.loadPlugins(splash)
    gui.show()
    
    splash.finish(gui)
    del splash
    
    sys.excepthook = unhandledException
    
    app.exec_loop()

###############################################################################

def unhandledException(exceptionType, exceptionValue, exceptionTraceback):
    tmpString = StringIO.StringIO()
    traceback.print_tb(exceptionTraceback, None, tmpString)
    errorString = """An unhandled exception occured. This is most likely a bug 
in the programming of Luma. In order to fix this, send an email with the 
following text and a detailed description of what you were doing to
luma-users@lists.sourceforge.net.\n"""
    errorString = errorString + tmpString.getvalue()
    errorString = errorString + "Reason: " + str(exceptionType) + " " + str(exceptionValue)
    environment.logMessage(LogObject("Error", errorString))

###############################################################################
    
if __name__ == '__main__':
    startApplication()


