]> git.lyx.org Git - lyx.git/blobdiff - development/MacOSX/inkscape
Amend 2d48072e: Get rid of Qt resources
[lyx.git] / development / MacOSX / inkscape
index bc34e86ddbcfc66a96f8f3f07672e8f04337f233..4865fde0914eacabd3f9435cc44d6ae10d08f0bf 100755 (executable)
@@ -1,13 +1,70 @@
 #!/bin/bash
+
+# \file inkscape
+# wrapper start script for Inkscape.app on Mac
+#
+# This file is part of LyX, the document processor.
+# Licence details can be found in the file COPYING.
+#
+# \author Stephan Witt
+# Full author contact details are available in file CREDITS.
+
 unset DISPLAY
-# at first try the well known location
-RESDIR="/Applications/Inkscape.app/Contents/Resources"
-test -f "${RESDIR}"/bin/inkscape -a -x "${RESDIR}"/bin/inkscape && exec "${RESDIR}"/bin/inkscape --without-gui "$@"
+
+# check for file arguments with relative path names
+# convert them to absolute path names
+# inkscape on Mac changes the working directory
+# this invalidates relative path names
+startinkscape() {
+       inkscape="$1" ; shift
+       pwd=$(pwd)
+       iparams=( "$@" )
+       oparams=()
+       # pre 1.0 application has cmd line utility in resources
+       # this utility needs the explicit option to suppress gui
+       # 1.0 don't have it and fails to start with it
+       case "${inkscape}" in
+       */Resources/*)
+               wogui="--without-gui"
+               ;;
+       esac
+       for i in ${!iparams[@]}; do
+               # echo $i "=>" "${iparams[$i]}"
+               case "${iparams[$i]}" in
+               --file=/*|--export-pdf=/*|--export-eps=/*|--export-png=/*|--export-emf=/*|--export-wmf=/*|--export-ps=/*|--export-ps-level=/*|--export-pdf-version=/*)
+                       oparams+=( "${iparams[$i]}" )
+                       ;;
+               --file=*|--export-pdf=*|--export-eps=*|--export-png=*|--export-emf=*|--export-wmf=*|--export-ps=*|--export-ps-level=*|--export-pdf-version=*)
+                       oparams+=( "${iparams[$i]//=/=${pwd}/}" )
+                       ;;
+               --without-gui|-z)
+                       # ignore this argument - its provided below anyway
+                       ;;
+               *)
+                       oparams+=( "${iparams[$i]}" )
+                       ;;
+               esac
+       done
+       exec "${inkscape}" ${wogui} "${oparams[@]}"
+}
+
+# try to find the inkscape installation...
+# at first try the well known location for Inkscape 1.0
+# but check for Inkscape 0.92.x too and skip this if it's in Resources
+RESDIR="/Applications/Inkscape.app/Contents/MacOS"
+if [ ! -f "/Applications/Inkscape.app/Contents/Resources/bin/inkscape" -a -f "${RESDIR}"/inkscape -a -x "${RESDIR}"/inkscape ]; then
+       startinkscape "${RESDIR}"/inkscape "$@"
+       exit 0
+fi
 # this failed... so try PATH expansion to start the inkscape shell wrapper
+# Now continue the check with pre 1.0 inkscape application and the PATH
 IFS=":" read -ra DIRLIST <<< "${PATH}"
-for BINDIR in "${DIRLIST[@]}" ; do
+for BINDIR in "/Applications/Inkscape.app/Contents/Resources/bin" "${DIRLIST[@]}" ; do
        RESDIR=$(dirname "${BINDIR}")
-       test -f "${RESDIR}"/bin/inkscape -a -x "${RESDIR}"/bin/inkscape && exec "${RESDIR}"/bin/inkscape --without-gui "$@"
+       if [ -f "${RESDIR}"/bin/inkscape -a -x "${RESDIR}"/bin/inkscape ]; then
+               startinkscape "${RESDIR}"/bin/inkscape "$@"
+               exit 0
+       fi
 done
 # report error and exit with failure status
 exec 1>&2