From 4e19d7abface38120fbaf734a7f4493879de6329 Mon Sep 17 00:00:00 2001 From: bartbakk Date: Thu, 11 Oct 2012 17:00:29 +0200 Subject: [PATCH] New MacOS script, will be the base for a .app --- Cura/gui/printWindow.py | 14 +++-- scripts/osx64/cura.command | 104 ++++++++++++++++++++++++++++++------- 2 files changed, 94 insertions(+), 24 deletions(-) diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index 8123e61..1f5dcf5 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -1,7 +1,7 @@ from __future__ import absolute_import import __init__ -import wx, threading, re, subprocess, sys, os, time +import wx, threading, re, subprocess, sys, os, time, platform from wx.lib import buttons from gui import icon @@ -38,8 +38,14 @@ class printProcessMonitor(): self.handle = None def loadFile(self, filename): - if self.handle == None: - self.handle = subprocess.Popen([sys.executable, sys.argv[0], '-r', filename], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if self.handle == None: + cmdList = [sys.executable, sys.argv[0], '-r', filename] + if platform.system() == "Darwin": + if platform.machine() == 'i386': + cmdList.insert(0, 'arch') + cmdList.insert(1, '-i386') + print cmdList + self.handle = subprocess.Popen(cmdList, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) self.thread = threading.Thread(target=self.Monitor) self.thread.start() else: @@ -51,7 +57,7 @@ class printProcessMonitor(): while(len(line) > 0): #print line.rstrip() line = p.stdout.readline() - p.wait() + p.communicate() self.handle = None self.thread = None diff --git a/scripts/osx64/cura.command b/scripts/osx64/cura.command index f594f3b..a967e82 100755 --- a/scripts/osx64/cura.command +++ b/scripts/osx64/cura.command @@ -1,33 +1,97 @@ -#!/bin/bash +#!/bin/sh -python2.7 -c '' -if [ $? != 0 ]; then - echo "Requires python2.7" - echo " Install python2.7" - exit 1 +SCRIPTDIR=`dirname "$0"` +RESDIR=${SCRIPTDIR}/../Resources/ + +#run the path_helper to set the $PATH for accessing python +if [ -x /usr/libexec/path_helper ]; then + eval `/usr/libexec/path_helper -s` fi -python2.7 -c 'import OpenGL' +displayMessage() +{ + /usr/bin/osascript > /dev/null <<-EOF +tell application "System Events" + activate + display dialog "$@" buttons {"Ok"} +end tell +EOF +} + +#Testing for python2.7, which we need and is not always installed on MacOS 1.6 +PY="python2.7" +$PY -c '' if [ $? != 0 ]; then - echo "Requires PyOpenGL" - echo " sudo easy_install PyOpenGL" - exit 1 + displayMessage "Python 2.7 is missing from your system. Cura requires Python2.7.\nStarting the installer" $PATH + #TODO: Install python2.7 + $PY -c '' + if [ $? != 0 ]; then + displayMessage "Failed to install python2.7" + exit 1 + fi fi -python2.7 -c 'import wx' +#Next check for numpy, numpy does not always run under 64bit, so we need to check if we need to use "arch -i386" +$PY -c 'import numpy' 2> /dev/null if [ $? != 0 ]; then - echo "Requires wx. Download and install (the Cocoa/64-bit variant) from:" - echo " http://www.wxpython.org/download.php" - exit 1 + PY="arch -i386 python2.7" + $PY -c 'import numpy' + if [ $? != 0 ]; then + displayMessage "Numpy is missing from your system, this is required.\nStarting the installer" + #TODO: Install numpy + + #After installing numpy, we need to check if we need to use arch -386 again + PY="python2.7" + $PY -c 'import numpy' + if [ $? != 0 ]; then + PY="arch -i386 python2.7" + $PY -c 'import numpy' + if [ $? != 0 ]; then + displayMessage "Failed to install numpy." + exit 1 + fi + fi + fi fi -python2.7 -c 'import serial' +#Check for wxPython +$PY -c 'import wx' if [ $? != 0 ]; then - echo "Requires pyserial." - echo " sudo easy_install pyserial" - exit 1 + displayMessage "wxPython is missing from your system. Cura requires wxPython.\nStarting the installer" + #TODO: Start wxPython installer + $PY -c 'import wx' + if [ $? != 0 ]; then + displayMessage "Failed to properly install wxPython." + exit 1 + fi fi -SCRIPT_DIR=`dirname $0` -python ${SCRIPT_DIR}/Cura/cura.py $@ +#Check for PyOpenGL +$PY -c 'import OpenGL' +if [ $? != 0 ]; then + displayMessage "PyOpenGL is missing from your system. Cura requires PyOpenGL.\nStarting installation" + #TODO: Install PyOpenGL + $PY -c 'import OpenGL' + if [ $? != 0 ]; then + displayMessage "Failed to properly install PyOpenGL." + exit 1 + fi +fi +#Check for pyserial +$PY -c 'import serial' +if [ $? != 0 ]; then + displayMessage "PySerial is missing from your system. Cura requires PySerial.\nStarting installation" + #TODO: Install PySerial + $PY -c 'import serial' + if [ $? != 0 ]; then + displayMessage "Failed to properly install PySerial." + exit 1 + fi +fi + +#All checks passed, start Cura +$PY "${RESDIR}Cura/cura.py" & +sleep 1 + +exit 0