spek

Acoustic spectrum analyser
git clone http://git.hanabi.in/repos/spek.git
Log | Files | Refs | README

commit 8eb05be73958b42fc170bffc00155f85b6744a72
parent 2ef711ab2192751a15550c789e7d7e1adfc0652b
Author: Alexander Kojevnikov <alexander@kojevnikov.com>
Date:   Wed, 16 Jun 2010 17:15:53 +1000

[osx] First half-functioning version of the OS X installer

Diffstat:
Aosx/Info.plist | 30++++++++++++++++++++++++++++++
Aosx/gtkrc | 2++
Aosx/launcher.sh | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aosx/spek.bundle | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 249 insertions(+), 0 deletions(-)

diff --git a/osx/Info.plist b/osx/Info.plist @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>Spek</string> + <key>CFBundleGetInfoString</key> + <string>0.4, (C) 2010 Alexander Kojevnikov</string> + <key>CFBundleIconFile</key> + <string>Spek.icns</string> + <key>CFBundleIdentifier</key> + <string>org.spek-project</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>0.4</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>0.4</string> + <key>NSHumanReadableCopyright</key> + <string>Copyright 2010 Alexander Kojevnikov, GNU General Public License.</string> + <key>LSMinimumSystemVersion</key> + <string>10.4</string> +</dict> +</plist> diff --git a/osx/gtkrc b/osx/gtkrc @@ -0,0 +1,2 @@ +gtk-icon-theme-name = "Tango" +gtk-enable-mnemonics = 0 diff --git a/osx/launcher.sh b/osx/launcher.sh @@ -0,0 +1,129 @@ +#!/bin/sh + +if test "x$IGE_DEBUG_LAUNCHER" != x; then + set -x +fi + +if test "x$IGE_DEBUG_GDB" != x; then + EXEC="gdb --args" +else + EXEC=exec +fi + +name="`basename $0`" +tmp="`pwd`/$0" +tmp=`dirname "$tmp"` +tmp=`dirname "$tmp"` +bundle=`dirname "$tmp"` +bundle_contents="$bundle"/Contents +bundle_res="$bundle_contents"/Resources +bundle_lib="$bundle_res"/lib +bundle_bin="$bundle_res"/bin +bundle_data="$bundle_res"/share +bundle_etc="$bundle_res"/etc + +export DYLD_LIBRARY_PATH="$bundle_lib" +export XDG_CONFIG_DIRS="$bundle_etc"/xdg +export XDG_DATA_DIRS="$bundle_data" +export GTK_DATA_PREFIX="$bundle_res" +export GTK_EXE_PREFIX="$bundle_res" +export GTK_PATH="$bundle_res" + +export GTK2_RC_FILES="$bundle_etc/gtk-2.0/gtkrc" +export GTK_IM_MODULE_FILE="$bundle_etc/gtk-2.0/gtk.immodules" +export GDK_PIXBUF_MODULE_FILE="$bundle_etc/gtk-2.0/gdk-pixbuf.loaders" +export PANGO_RC_FILE="$bundle_etc/pango/pangorc" + +# Set the locale-related variables appropriately: +unset LANG LC_MESSAGES LC_MONETARY + +# Start by trying the Collation preference, in case it's the only setting that exists. +APPLECOLLATION=`defaults read .GlobalPreferences AppleCollationOrder` +if test "${APPLECOLLATION}"; then + COLL=`ls -d /usr/share/locale/${APPLECOLLATION}*.UTF-8 2>> /dev/null` + if test "${COLL}"; then + # $COLL is potentially multi-line; concatenate lines by not using quotes. + export LANG=`echo ${COLL} | awk '{print $1}' | awk -F/ '{print $5}'` + fi +fi +unset APPLECOLLATION COLL + +# Continue by attempting to find the Locale preference. +APPLELOCALE=`defaults read .GlobalPreferences AppleLocale` +if test "${APPLELOCALE}"; then + LOCALELANG=`echo "${APPLELOCALE}" | awk -F@ '{print $1".UTF-8"}'` + if test -d "/usr/share/locale/${LOCALELANG}"; then + export LANG="${LOCALELANG}" + fi +fi +unset LOCALELANG + +# If there is still no locale value, then set US English as a default. +if test -z "${LANG}"; then + export LANG=en_US.UTF-8 +fi + +# The AppleLocale setting may contain a currency-related substring. +# Attempt to act on it. +# First strip the string to just the currency symbol and the language symbol +APPLECURRENCY=`echo "${APPLELOCALE}" | awk -F= '{print $2}'` +APPLELANG=`echo "${APPLELOCALE}" | awk -F_ '{print $1}'` +if test "${APPLECURRENCY}"; then + # The user has set a currency different from that of their locale. + # Search for a locale that uses that currency, and set LC_MONETARY accordingly. + + # First try to find an LC_MONETARY file that combines the language with the currency. + FILES=`find /usr/share/locale/${APPLELANG}*UTF-8 -name LC_MONETARY -exec grep -H $APPLECURRENCY {} \;` + if test -z "$FILES"; then + # Otherwise try to find any LC_MONETARY file that uses that currency. + FILES=`find /usr/share/locale/*UTF-8 -name LC_MONETARY -exec grep -H $APPLECURRENCY {} \;` + fi + + if test "$FILES"; then + # We found a locale that matches; set LC_MONETARY. + export LC_MONETARY=`echo ${FILES} | awk -F: '{print $1}' | awk -F/ '{print $5}'` + fi +fi +unset APPLECURRENCY APPLELANG APPLELOCALE FILES + +# Has a language ordering been set? +# If so, set LC_MESSAGES accordingly; otherwise skip it. +APPLELANGUAGES=`defaults read .GlobalPreferences AppleLanguages | awk 'length > 2' | awk -F, '{print $1}' | sed s/\ //g | sed s/-/_/ | sed s/\"//g` +if test "$APPLELANGUAGES"; then + # A language ordering exists. + # Test, item per item, to see whether there is an corresponding locale. + for L in $APPLELANGUAGES + do + POS=`echo ${L} | awk '{print index(ENVIRON["LANG"], $0)}'` + if test $POS -eq 1; then + # The language symbol is a subset of the $LANG variable. We're done! + break + fi + # NOTE: the following may fail for the alternate Chinese localizations. + LC=`ls -d /usr/share/locale/${L}*.UTF-8 2>> /dev/null` + # $LC is potentially multi-line; concatenate lines by not using quotes. + if test $LC; then + # There is a UTF-8 locale matching this language. + export LC_MESSAGES=`echo ${LC} | awk '{print $1}' | awk -F/ '{print $5}'` + break + fi + done +fi +unset APPLELANGUAGES POS LC L + +if test -f "$bundle_lib/charset.alias"; then + export CHARSETALIASDIR="$bundle_lib" +fi + +# Extra arguments can be added in environment.sh. +EXTRA_ARGS= +if test -f "$bundle_res/environment.sh"; then + source "$bundle_res/environment.sh" +fi + +# Strip out the argument added by the OS. +if [ x`echo "x$1" | sed -e "s/^x-psn_.*//"` == x ]; then + shift 1 +fi + +$EXEC "$bundle_contents/MacOS/$name-bin" $* $EXTRA_ARGS diff --git a/osx/spek.bundle b/osx/spek.bundle @@ -0,0 +1,88 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<app-bundle> + + <meta> + <prefix name="default">${env:JHBUILD_PREFIX}</prefix> + + <destination overwrite="yes">${env:HOME}/Desktop</destination> + + <image> + <!-- Not implemented yet (DMG image). --> + </image> + + <!-- Comment this out to keep the install names in binaries --> + <run-install-name-tool/> + + <launcher-script>${project}/launcher.sh</launcher-script > + + </meta> + + <plist>${project}/Info.plist</plist> + + <main-binary>${prefix}/bin/spek</main-binary> + + <!-- Copy in GTK+ modules. Note the use of the + "${pkg:module:variable}" macro, which evaluates to a pkg-config + variable in the specified module. Note that any libraries that + binaries link to are also copied in automatically. + --> + <binary> + ${prefix}/lib/gtk-2.0/${pkg:gtk+-2.0:gtk_binary_version}/loaders/*.so + </binary> + + <!-- Copy in GTK+ theme engines. Dunno why this is a dupe of + modules, but that's why it's commented out. > + <binary> + ${prefix}/lib/gtk-2.0/${pkg:gtk+-2.0:gtk_binary_version}/loaders/*.so + </binary --> + + <!-- Translation filenames, one for each program or library that you + want to copy in to the bundle. The "dest" attribute is + optional, as usual. Bundler will find all translations of that + library/program under the indicated directory and copy them.--> + <translations dest="${bundle}/Contents/Resources" name="gtk20"> + ${prefix}/share/locale + </translations> + + <!-- Data to copy in, usually Glade/UI files, images, sounds files + etc. The destination inside the bundle can be specified if the + files should end up at a different location, by using the + "dest" property. The destination must then start with the macro + "${bundle}", which refers to the bundle root directory. + --> + <!-- data> + ${prefix}/share/giggle + </data --> + + <!-- Copy in the themes data. You may want to trim this to save space + in your bundle. --> + <data> + ${prefix}/share/themes + </data> + + <!-- Copy icons. Note that the .icns file is an Apple format which + contains up to 4 sizes of icon. You can use + /Developer/Applications/Utilities/Icon Composer.app to import + artwork and create the file. > + <data dest="${bundle}/Contents/Resources"> + ${project}/Spek.icns + </data --> + + <data dest="${bundle}/Contents/Resources/etc/gtk-2.0/gtkrc"> + ${project}/gtkrc + </data> + + <!-- Icon themes to copy. The "icons" property can be either of + "auto", "all", or "none". All or none should be + self-explanatory, while auto means that the script will try to + figure out which icons are needed. This is done by getting all + the strings from all copied binaries, and matching them against + icon names. To be safe, you should use "all". "none" is useful + if you want just the index.theme file but no icons, mostly + needed for the "hicolor" base theme. + > + <icon-theme icons="auto"> + Tango + </icon-theme --> + +</app-bundle>