diff --git a/lightningbeam.py b/lightningbeam.py index af9afda..8344e18 100755 --- a/lightningbeam.py +++ b/lightningbeam.py @@ -3,7 +3,7 @@ # © 2012 Skyler Lehmkuhl # Released under the GPLv3. For more information, see gpl.txt. -import os, shutil, tarfile, tempfile, StringIO +import os, shutil, tarfile, tempfile, StringIO, urllib # Workaround for broken menubar under Ubuntu os.putenv("UBUNTU_MENUPROXY", "0") @@ -233,6 +233,28 @@ def run_file(self=None): logloc = os.getenv('HOME')+"/.macromedia/Flash_Player/Logs/flashlog.txt" elif svlgui.PLATFORM=="osx": logloc = os.getenv('HOME')+"/Library/Preferences/Macromedia/Flash Player/Logs/flashlog.txt" + if not os.path.exists('/Applications/Flash Player Debugger.app'): + # check for Flash Player + result = svlgui.alert("You do not have a Flash debugger installed. Install one?", confirm=True) + if not result: + svlgui.alert("Aborting.") + return + else: + svlgui.alert("The file will download when you click Ok.\nThis may take some time.") + urllib.urlretrieve("http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_sa_debug.app.zip", "fp.app.zip") + # Unzip the file. Apparently ditto is better for OSX apps than unzip. + os.system('ditto -V -x -k --sequesterRsrc --rsrc fp.app.zip .') + shutil.move('Flash Player Debugger.app', '/Applications') + os.system('open -a "/Applications/Flash Player Debugger.app"') + os.system('defaults write com.apple.LaunchServices LSHandlers -array-add "LSHandlerContentTagswfLSHandlerContentTagClasspublic.filename-extensionLSHandlerRoleAllcom.macromedia.flash player debugger.app"') + os.system("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user") + svlgui.alert("Downloaded!") + if not os.path.exists(os.getenv('HOME')+'/mm.cfg'): + with open(os.getenv('HOME')+'/mm.cfg', "w") as mm: + mm.write("ErrorReportingEnable=1\nTraceOutputFileEnable=1") + os.mkdir(os.getenv('HOME')+"/Library/Preferences/Macromedia/Flash Player/Logs") + with open(logloc, "w") as f: + f.write("") try: logfile.close() except: @@ -247,8 +269,8 @@ def run_file(self=None): logfile = open(logloc, "r") def updatetrace(outputtext): try: - print logfile.readline() - # outputtext.text+=logfile.readline() + # print logfile.readline() + outputtext.text+=logfile.readline() outputtext.scroll_bottom() # this doesn't work except: pass diff --git a/svlgui.py b/svlgui.py index ef2927f..0c4e920 100644 --- a/svlgui.py +++ b/svlgui.py @@ -387,7 +387,7 @@ class htmlobj: return str(self) class Window: - def __init__(self, title=""): + def __init__(self, title="", closable=True): __windowlist__.append(self) if SYSTEM=="gtk": self.window = gtk.Window() @@ -396,7 +396,7 @@ class Window: self.window.show_all() self.window.connect("destroy",self.destroy) elif SYSTEM=="osx": - self.window = LightningbeamWindow(width=1024,height=500) + self.window = LightningbeamWindow(width=1024,height=500, closable=closable) if not title=="": self.window.title = title #components = [i._int() for i in args] @@ -2511,7 +2511,7 @@ def set_cursor(curs, widget=None): else: print "Sorry, I don't have that cursor." -def alert(text,critical=False): +def alert(text,critical=False,confirm=False,async=False): '''Launches an alert window with a given text. If critical is True, closing the alert terminates SWIFT.''' if SYSTEM=="gtk": @@ -2556,7 +2556,17 @@ def alert(text,critical=False): Alerts.stop_alert(text) # stop_alert is a critical error alert sys.exit(0) # Exit to OS. Sometimes we can't recover an error. else: - Alerts.note_alert(text) # note_alert is a general alert, i.e. "I'm a computer." + if confirm: + return Alerts.confirm(text) + else: + if async: + a = ModalDialog() + a.place(OSXLabel(text=text),left=0,top=0,right=0,bottom=0,sticky="nesw") + a.show() + a.present() + return a + else: + Alerts.note_alert(text) # note_alert is a general alert, i.e. "I'm a computer." elif SYSTEM=="html": jscommunicate("alert("+text+")") if critical: