#!/usr/bin/env python

import sys, os, getopt
import gettext
import linecache

def traceit(frame, event, arg):
    if event == "line" or event == "call":
        lineno = frame.f_lineno
        filename = frame.f_globals["__file__"]
        if (filename.endswith(".pyc") or
            filename.endswith(".pyo")):
            filename = filename[:-1]
        name = frame.f_globals["__name__"]
        line = linecache.getline(filename, lineno)
        print "%s:%s:%s: %s" % (event, name, lineno, line.rstrip())
    return traceit

gettext.install('gjots2', '/usr/share/locale')

def ver2str(ver):
    return ".".join(map(str,ver))

#from Gjots.gui import *
#from Gjots.version import version

def usage():
	print _("""Usage: gjots [OPTIONS] [FILENAME]
A gnome-2/X11 jotter

OPTIONS:
-h, --help:                         this help
-d, --debug:                        debug to stdout
-t, --trace:                        trace lines as they execute
-g 123x456, --geometry=123x456:     initial geometry (X x Y)
-p, --purge-password				don't remember password
-r, --readonly:                     no editing (or locking)
-V, --version:                      print the version and exit

FILENAME:
	gjots data filename (default is $HOME/.gjotsfile)
""")

if __name__ == '__main__':
	pyver = (2,2)
	pygtkver = (2,2,0)

	dirName, progName = os.path.split(sys.argv[0])

	#
	# python version
	#
	if sys.version_info[:2] < pyver:
	    sys.stderr.write(_("%s requires python%s or higher.") % (progName, ver2str(pyver)))
	    sys.exit(1)

	#
	# pygtk version
	#
	try:
	    import pygtk
	except ImportError, err:
	    print err
	    sys.stderr.write(_("%s requires pygtk-%s.\n") % (progName, ver2str(pygtkver)))
	    sys.exit(1)
	else:
	    pygtk.require("2.0")

	#
	# Add the library path to the system load path
	#
	# developer should use local version executed from the current directory:
	localdir=os.curdir + "/lib"
	if os.access(localdir, os.F_OK) and os.access("gjots.glade3", os.F_OK):
		prefix = localdir
		sys.path = [ localdir ] + sys.path
		sys.stderr.write(_("%s: Warning: running modules from %s\n") % (progName, localdir))
	else:
		# Assumption: we're running from $prefix/bin
		prefix, bin = os.path.split(dirName)
		sys.path = [ prefix + '/lib/gjots2' ] + sys.path

	from gui import *
	from version import *

	try:
	    opts, args = getopt.getopt(sys.argv[1:], "hdrtg:V", ["help", "debug", "readonly", "trace", "geometry=", "version"])
	except getopt.GetoptError, errmsg:
		sys.stderr.write("%s: %s\n" % (progName, errmsg))
		sys.stderr.write(_("Use -h for help\n"))
		sys.exit(2)

	readonly = 0
	output = None
	geometry = ""
	prefs = ""
	debug = 0
	purge_password = 0
	for o, a in opts:
		if o in ("-h", "--help"):
			usage()
			sys.exit(0)
		if o in ("-V", "--version"):
			print _("%s version %s") % (progName, gjots_version)
			sys.exit(0)
		if o in ("-p", "--purge-password"):
			purge_password = 1
		if o in ("-r", "--readonly"):
			readonly = 1
		if o in ("-g", "--geometry"):
			geometry = a
		if o in ("-d", "--debug"):
			debug = 1
		if o in ("-t", "--trace"):
			sys.settrace(traceit)

	if len(args):
		filename = args[0]
	else:
		filename = os.environ["HOME"]+"/.gjotsfile"

	if not os.access(filename, os.R_OK):
		os.system("touch " + filename)

	import gnome
	gnome.program_init(progName, gjots_version)

	gui = gjots_gui(prefix, progName, geometry, filename, readonly, debug, purge_password)

	gtk.main()

