#!/usr/bin/env python
import sys, os, getopt
import linecache
from distutils.sysconfig import get_python_lib
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
def ver2str(ver):
return ".".join(map(str,ver))
def usage():
print _("""Usage: gjots [OPTIONS] [FILENAME]
A gtk/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__':
dirName, progName = os.path.split(sys.argv[0])
prefix = sys.prefix
#
# 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("ui/gjots.ui", os.F_OK):
prefix = localdir
sys.path = [ localdir ] + sys.path
sys.stderr.write("%s: Warning: running modules from %s\n" % (progName, localdir))
else:
sys.path = [ get_python_lib() + '/gjots2' ] + sys.path
# i18n support
import gettext
import locale
# Locale setting in Gtk.Builder appears somewhat broken under Python. See:
# https://bugzilla.gnome.org/show_bug.cgi?id=574520
locale_domain = "gjots2"
locale_dir = prefix + "/share/locale"
gettext.bindtextdomain(locale_domain, locale_dir)
locale.setlocale(locale.LC_ALL, '')
gettext.textdomain(locale_domain)
gettext.install(locale_domain, localedir=locale_dir, unicode=True)
try:
locale.bindtextdomain(locale_domain, locale_dir)
locale.bind_textdomain_codeset(locale_domain, 'UTF-8')
except locale.Error:
print "Couldn't bind the translation domain. Some translations won't work."
_ = gettext.gettext
#
# python version
#
pyver = (2,5)
if sys.version_info[:2] < pyver:
sys.stderr.write(_("%s requires python%s or higher.") % (progName, ver2str(pyver)))
sys.exit(1)
#
# pygtk version
#
import gi
gi.require_version("Gtk", "3.0")
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)
gui = gjots_gui(prefix, progName, geometry, filename, readonly, debug, purge_password)
Gtk.main()
# Local variables:
# eval:(setq compile-command "./gjots2 test.gjots")
# eval:(setq-default indent-tabs-mode 1)
# eval:(setq tab-width 4)
# eval:(setq python-indent 4)
# End: