#! /usr/bin/env python
# -*- coding: UTF-8 -*-

# setup GTK
try:
    import pygtk; pygtk.require("2.0")
except:
    print "You need a recent version of PyGTK to run this program."

from main import init
from main import HOME
from main.Starter import Starter
from main.CmdLineParser import CmdLineParser
from main import print_about

import os
import sys
import gtk
import gnome.ui
import gc



class __Null:
 
    """Null object that does __nothing__"""
 
    def __init__(self, *args, **kwargs): pass
    def __call__(self, *args, **kwargs): return self
    def __repr__(self): return 'Null'
    def __str__(self): return 'Null'
    def __nonzero__(self): return 0
    
    def __getattr__(self, name): return self
    def __setattr__(self, name, value): return self
    def __delattr__(self, name): return self



# Defines Null as a builtin
# we don't need more than one instance

import __builtin__; __builtin__.Null = __Null()



#
# Manually call the garbage collector.
#
def gc_collect():

    gc.collect()
    return gtk.TRUE


init()

# connect to gnome-session
try:
    # does the required method exist?
    gnome.ui.Client.set_restart_command
    client = gnome.ui.master_client()
    if (client):
        client.set_restart_style(gnome.ui.RESTART_IF_RUNNING)
        client.set_restart_command(1, [sys.argv[0]])

except:
    print "Could not connect to gnome-session. GNOME session management " \
          "will not be\navailable for this application."

print_about()
cmdlineparser = CmdLineParser()
cmdlineparser.parse(sys.argv[1:])

starter = Starter()
starter.start_displays()

# Trigger the GC every 60 seconds
# might be removed
gtk.timeout_add(60000, gc_collect)

gtk.mainloop()
