Hi,

I've recently made a python script to do this. It is based on the lily-wins script, and should work ok.

Aligorith

_________________________________________________________________
Become a fitness fanatic @  http://xtramsn.co.nz/health
#!/bin/python
# lilytex-wins.py -- LilyPond command for .lytex on Windows
# By Joshua Leung ([EMAIL PROTECTED]), based on lily-wins.py
# useful for LilyPond 2.4.2 - Recent lower versions may also work.

# To make it work with a windows right-click, add this to file-type associations
# for the .lytex extension. Change the cygwin directory to the correct place for
# your system. Also, place this in the right place.
# C:\cygwin\bin\bash.exe --login -c '/bin/lilytex-wins "%1"'


# Coded 12 April 2005.
# 12/04/05 - It works with files in a user's home dir. Not sure about other places.
# - EDIT: it falls down when path has spaces. why, I don't know. how to fix, I don't know.
# - after a short break, it works!


# importing - removed import time
import getopt
import os
import re
import sys


def usage (): print 'Usage [-h,--help] lilytex-wins LYTEX-FILE'

def read_pipe (command):
        s = os.popen (command).read ()
        if s and s[-1] == '\n':
                return s[:-1]
        return s

def system (command):
        os.system (command)

def strip_extension (f, ext):
        (p, e) = os.path.splitext (f)
        if e == ext:
                e = ''
        return p + e

def escape_shell (x):
        return re.sub ("(\s|[`'\"\\\\])", r'\\\1',x)



########
# main

# the code around here could do with a shake up! - but it is currently working.
filea = sys.argv[1]


native_file = filea
print 'Processing %s ...' % native_file
file = read_pipe ('/usr/bin/cygpath -au %s' % escape_shell (native_file))

if not file:
        file = native_file

cwd = os.getcwd ()

dir = os.path.dirname (file)
if not dir:
        dir = '.'
base = os.path.basename (file)
# just a few changes here
if base.find('.lytex') == -1:
        stem = strip_extension (base, '.LYTEX')
else:
        stem = strip_extension (base, '.lytex')

native_base = '%(dir)s/%(stem)s' % vars ()
native_base = read_pipe ('/usr/bin/cygpath -aw %s' % escape_shell (native_base))


pdf_base = '%(dir)s/out/%(stem)s' % vars ()
pdf_base = read_pipe ('/usr/bin/cygpath -aw %s' % escape_shell (pdf_base))

if not native_base:
        native_base = '%(dir)s/%(stem)s' % vars ()

pdfname = read_pipe ('/usr/bin/regtool get /root/.pdf/')
pdfopencommand = read_pipe ('/usr/bin/regtool get /root/%s/shell/open/command/' % escape_shell (pdfname))


# hmm - pdf stuff
native_view = re.sub ('"([^"]*).*"', '\\1', pdfopencommand)
if not native_view:
        native_view = 'acrobat'

if native_view:
pdfview = read_pipe ('/usr/bin/cygpath -au %s' % escape_shell (native_view))
if not pdfview:
# message box?
sys.stderr.write ('no pdf viewer found\n')
pdfview = 'xpdf'


os.chdir (dir)
pdffile = '%(stem)s.pdf' % vars ()
if os.path.exists ('out'):
        os.chdir ('out')
        if os.path.exists (pdffile): # why do we have this functionality 
anyway???
                os.unlink (pdffile)
os.chdir (dir) # reset to

# my major changes from this point onwards
script = '/usr/bin/lilypond-book --output=out'
exeA = '/usr/bin/latex'
exeB = '/usr/bin/dvips -u+lilypond -u+ec-mftrace'
scriptB = '/usr/bin/ps2pdf'

if os.path.exists ('/usr/bin/lilypond-book'):
        script = '/usr/bin/lilypond-book --output=out'

# run lilypond-book on the lytex file
statA = system ('%s %s' % (script, escape_shell (base)))
os.chdir ('out') # change the working directory
statC = system ('%s %s.tex' % (exeA, escape_shell (stem)))
statD = system ('%s %s.dvi' % (exeB, escape_shell (stem)))
statE = system ('%s %s.ps' % (scriptB, escape_shell (stem)))
# later, we might to make a copy of this PDF, and place it with the .lytex

if not os.path.exists (pdffile):
        print 'PDF output not found. An error occured.'
        print 'Press enter to close window'
        sys.stdin.readline ()
else:
        system ('%s %s.pdf' % (escape_shell (pdfview), escape_shell (pdf_base)))

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to