#!/usr/bin/env python2.4
# -*- mode: python -*-

import os.path
import sys
import optparse

import pygtk
pygtk.require('2.0')

import democracy
# Make sure democracy modules are on the search path
sys.path.insert(0, os.path.abspath(os.path.dirname(democracy.__file__)))
import config
import prefs

if '--unittest' in sys.argv:
    # handle this outside optparse, because unittest has its own option set
    sys.argv.remove('--unittest')
    import app
    import unittest
    import test
    unittest.main(module=test)

usage = "usage: %prog [options] [torrent files] [video files]"
parser = optparse.OptionParser(usage=usage)
parser.add_option('--unittest', dest='unittest', default=False,
    action='store_true', 
    help='run unittests instead of launching the program')
parser.add_option('-v', '--version', dest='version', default=False,
    action='store_true', help='print version info')
parser.add_option('--profile', metavar='FILE', help='write profiling information to FILE')
parser.add_option('--bias', metavar='BIAS', help='set profiling bias to BIAS', type=float, default=None)
(options, args) = parser.parse_args()

def startapp():
    import singleclick
    for i in xrange(len(args)):
        if args[i].startswith('file://'):
            args[i] = args[i][len('file://'):]
    singleclick.setCommandLineArgs(args)
    import app
    app.main()
if options.version:
    print "Democracy Player"
    print "Version: %s" % config.get(prefs.APP_VERSION)
    print ""
    print "Democracy Player comes with ABSOLUTELY NO WARRANTY."
    print "This is free software, and you are welcome to redistribute it"
    print "under certain conditions.  See license.txt for details."
elif options.profile:
    import profile
    import eventloop
    def main():
        import app
        app.main()
    if (options.bias):
        profile.Profile.bias = options.bias
    eventloop.profile_file = options.profile
    profile.run ('main()', options.profile)
else:
    try:
        import dbus
        import onetime
        try:
            onetime.OneTime()
            startapp()
        except onetime.NameExistsException:
            bus = dbus.SessionBus()
            proxy_obj = bus.get_object('org.participatoryculture.dtv.onetime', '/org/participatoryculture/dtv/OneTime')
            iface = dbus.Interface(proxy_obj, 'org.participatoryculture.dtv.OneTimeIface')
    
            dbusargs = dbus.Array(args, signature="s")
    
            iface.HandleArgs(dbusargs)
    except ImportError:
        startapp()
