summaryrefslogtreecommitdiff
path: root/support/gtex-letter/gtex-letter
diff options
context:
space:
mode:
Diffstat (limited to 'support/gtex-letter/gtex-letter')
-rw-r--r--support/gtex-letter/gtex-letter282
1 files changed, 282 insertions, 0 deletions
diff --git a/support/gtex-letter/gtex-letter b/support/gtex-letter/gtex-letter
new file mode 100644
index 0000000000..87b754abcd
--- /dev/null
+++ b/support/gtex-letter/gtex-letter
@@ -0,0 +1,282 @@
+#!/usr/bin/env python
+
+GTEX_LETTER_VERSION = '0.30'
+PRG_DIR="/opt/gnome/bin/gtex-letter-prg"
+RC_FILENAME='.gtex-letterrc'
+
+
+import sys
+import os.path
+import getopt
+import ConfigParser
+import string
+import gettext
+
+gettext.bindtextdomain('gtex-letter', '/usr/share/locale')
+gettext.textdomain('gtex-letter')
+_ = gettext.gettext
+
+def help():
+ print "usage: gtex-letter [OPTIONS] [file.tex]"
+ print " PIPE | gtex-letter [OPTIONS] [file.tex]"
+ print
+ print " -a --address str get address with given ID from GnomeCard-file "
+ print " as default address for the letter"
+ print " -s --subject str subject of the letter"
+ print " -o --opening str the letter's opening"
+ print " -f --file str get letter contents from file"
+ print " -c --closing str closing for the letter"
+ print
+ print " -r --rcfile str use a different rc-file (.gtex-letterrc)"
+ print " -e --header str headerfile of the letter"
+ print " --guessformat str the format of filename-guesses"
+ print " --guesspath str the path to prepend to guessed filenames"
+ print " --guilevel str choose the complexity of the gui used."
+ print " possible values are: beginner, normal"
+ print " and expert. While beginner-level is easy to"
+ print " understand, expert is very straight forward."
+ print " --nosplash no start-screen"
+ print
+ print " -n --nogui non-interactive letter production"
+ print " --noshow do not show the letter "
+ print " (only with -n/--nogui-option)"
+ print " --quitelatex hide latex output"
+ print
+ print " -p --print direct printing of the letter"
+ print " (only with -n/--nogui-option)"
+ print
+ print " -h --help print this file and exit"
+ print " -u --usage like help"
+ print " -v --version print version and exit"
+
+def version():
+ return "gtex-letter " + GTEX_LETTER_VERSION
+
+FALSE=0
+TRUE=-1
+
+rc_file = RC_FILENAME
+defaultaddresses = ''
+closing = ''
+contents= ''
+contentsfile = ''
+filename = ''
+header = ''
+opening = ''
+subject = ''
+guessformat = ''
+guesspath = ''
+quite_latex=None
+
+nogui = FALSE
+noshow = FALSE
+printit = FALSE
+guilevel = FALSE
+splash = TRUE
+
+opts, args = getopt.getopt(sys.argv[1:], 'a:c:e:f:hno:pr:s:uv', ['address=', 'closing=', 'file=', 'guessformat=', 'guesspath=', 'guilevel=', 'header=', 'help', 'nogui', 'noshow', 'nosplash', 'opening=', 'print', 'quitelatex', 'rcfile=', 'subject=', 'usage', 'version'])
+for opt in opts:
+ option = opt[0]
+ value = opt[1]
+ if option =='-a' or option =='--address':
+ defaultaddresses = value
+ elif option =='-c' or option =='--closing':
+ closing = value
+ elif option =='-f' or option =='--file':
+ contentsfile = value
+ if not os.path.isfile(contentsfile):
+ print _('Error: Provided file not found.')
+ sys.exit()
+ file = open(contentsfile, 'r')
+ contents= file.read()
+ file.close()
+ elif option =='--guilevel':
+ guilevel = value
+ elif option =='-e' or option =='--header':
+ header = value
+ elif option =='--guessformat':
+ guessformat = value
+ elif option =='--guesspath':
+ guesspath = value
+ elif option =='-h' or option =='--help':
+ help()
+ sys.exit()
+ elif option =='-n' or option =='--nogui':
+ nogui = TRUE
+ elif option =='--noshow':
+ noshow = TRUE
+ elif option =='--nosplash':
+ splash = FALSE
+ elif option =='-o' or option =='--opening':
+ opening = value
+ elif option =='-p' or option =='--print':
+ printit = TRUE
+ elif option =='--quitelatex':
+ quite_latex = TRUE
+ elif option =='-r' or option =='--rcfile':
+ rc_file = value
+ if not os.path.isfile(rc_file):
+ print _('Error: Provided rc-file not found.')
+ sys.exit()
+ elif option =='-s' or option =='--subject':
+ subject = value
+ elif option =='-u' or option =='--usage':
+ help()
+ sys.exit()
+ elif option =='-v' or option =='--version':
+ print version()
+ sys.exit()
+
+if (noshow or printit) and not nogui:
+ print _("Error: You may not set the noshow or the print option without setting nogui.")
+ sys.exit()
+
+
+
+
+# fetch the STDIN if it is set.
+if not sys.stdin.isatty(): # redirected from file or pipe
+ if not contents:
+ contents = sys.stdin.read()
+ elif contents and not defaultaddress:
+ defaultaddress = sys.stdin.read()[:-1] # remove CR-char
+ else:
+ print _("Error: I do not know what to do with STDIN (pipe). You set both, -f/--file and -a/--address, in the options, so there is no place to put the pipe.")
+ sys.exit()
+
+if args:
+ filename = args[0]
+
+
+
+
+
+
+
+sys.argv=[''] # i get an error from module gui, if there are options left in sys.argv
+
+import utils, addressbook_vcard, gui # if i put this before the opts-stuff,
+import mk_letter, config # the options are unknown...
+import error
+
+
+
+
+class gtex_letter:
+ def __init__ (self, rc, \
+ filename = '',\
+ addresskeys = '',\
+ closing = '',\
+ contents = '',\
+ header = '',\
+ opening = '',\
+ subject = ''):
+
+ self.init_address(addresskeys, rc)
+
+ self.init_header(header, rc)
+
+ self.subject = subject
+ self.opening = opening
+ self.contents = contents
+ self.closing = closing
+
+ self.filename = filename
+
+ if not self.filename:
+ file = utils.guess_filename(self, rc)
+ if file:
+ self.filename = file
+
+ self.path = utils.get_path_from_file(self.filename)
+ self.letter_written = FALSE
+
+
+ def init_address(self, addresskeys, rc):
+ self.address = ''
+
+ self.addresscards = []
+
+ if addresskeys:
+ list = []
+ while 1:
+ hit = string.find(addresskeys, ',')
+ if hit == -1:
+ list.append(string.strip(addresskeys))
+ addresskeys=''
+ break
+ list.append(string.strip(addresskeys[:hit]))
+ addresskeys = addresskeys[hit+1:]
+ ab = addressbook_vcard.addressbook(rc.addressbooks)
+ ab.read_file()
+ for name in list:
+ try:
+ card = ab.get_card(name)
+ if card:
+ self.addresscards.append(card)
+ else:
+ raise error.AddressCardNotFound, name
+ except error.AddressCardNotFound, cardname:
+ print _("The addresscard '%s' could not be found.") % cardname
+
+ for card in self.addresscards:
+ if self.address:
+ self.address = self.address + '\n'
+ self.address = self.address + utils.mk_adr(card, \
+ rc.addressformats, rc.mycountry)
+
+ if self.address:
+ self.address_slashes = utils.add_slashes(self.address)
+
+ if not self.address:
+ self.address_slashes = ''
+
+ def init_header(self, header, rc):
+ self.header = ''
+ if header:
+ self.header = header
+ else:
+ if rc.headerdefaults:
+ self.header = rc.headerdefaults[0]
+ try:
+ if self.header:
+ if self.header[-4:] <> '.tex':
+ self.header = self.header + '.tex'
+ self.header = utils.get_path(self.header, rc.prg_dir)
+ if self.header:
+ if not os.path.split(self.header)[0]: # if it is still local
+ self.header = os.path.join(os.getcwd(), \
+ self.header)
+ else:
+ raise IOError, header
+ except IOError, file:
+ print _("Submitted headerfile '%s' not found") % file
+
+
+
+def main ():
+ rc = config.gtex_letter_config(rc_file, nogui=nogui, \
+ noshow=noshow, splash=splash, \
+ printit=printit, guilevel=guilevel, \
+ guessformat=guessformat, guesspath=guesspath, quite_latex=quite_latex, prg_dir=PRG_DIR )
+
+ letter = gtex_letter(rc, filename, defaultaddresses, \
+ closing, contents, \
+ header, opening, subject)
+ if rc.nogui:
+ letter.letter_written = not mk_letter.write_file(letter, rc)
+ if not letter.letter_written:
+ print _("Aborting.")
+ sys.exit()
+ mk_letter.tex_latex(letter, rc)
+ if not rc.noshow:
+ mk_letter.tex_xdvi(letter, rc)
+ if printit:
+ mk_letter.tex_print(letter, rc)
+ mk_letter.rm_latex_files(letter)
+ else:
+ gp = gui.GUI (rc, letter)
+ gp.mainloop ()
+
+if __name__ == '__main__':
+ main ()