# Programmer: Daniel Pozmanter
# E-mail: drpython@bluebottle.com
# Note: You must reply to the verification e-mail to get through.
#
# Copyright 2003-2004 Daniel Pozmanter
#
# Distributed under the terms of the GPL (GNU Public License)
#
# DrPython is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#This plugin overloads the run function to
#run using the text in txtDocument without
#saving.
#It uses a temporary file to do this.
#Changelog:
'''
For version 0.0.2:
Peter Schott's Bug Report has been fixed.
Uses the updated ExecuteWithPython function.
Uses DrFrame.ShowMessage.
Now has its own menu item, instead of overriding OnRun.
'''
#Version: 0.0.3, 08.04.2007.
#Version: 0.0.4, 19.07.2007.
#TODO: How to shade toolbar icon until something is in mem
import wx, tempfile, os, atexit
def OnAbout(DrFrame):
AboutString = '''Run From Buffer:
Version: 0.0.4
By Daniel Pozmanter
Patch by Ruben Perez
Released under the GPL.
Credits:
Peter Schott: Bug-Report.
'''
DrFrame.ShowMessage(AboutString, "About")
def OnHelp(DrFrame):
HelpString = "\n"
d = wx.lib.dialogs.ScrolledMessageDialog(DrFrame, HelpString, "Help")
d.ShowModal()
d.Destroy()
def UnInstall(DrFrame):
plugindir = DrFrame.pluginsdirectory
if os.path.exists(plugindir + "/bitmaps/16/Run From Buffer.png"):
os.remove(plugindir + "/bitmaps/16/Run From Buffer.png")
if os.path.exists(plugindir + "/bitmaps/24/Run From Buffer.png"):
os.remove(plugindir + "/bitmaps/24/Run From Buffer.png")
DrFrame.RemovePluginIcon("RunFromBuffer")
return True
def destroyTempfile(thefile):
os.remove(thefile)
def Plugin(DrFrame):
def OnRunFromBuffer(event):
text = DrFrame.txtDocument.GetText()
if DrFrame.txtDocument.filename:
fname = os.path.dirname(DrFrame.txtDocument.filename) + "/" + os.path.split(tempfile.mktemp(".py"))[1]
else:
fname = tempfile.mktemp(".py")
f = file(fname, 'wb')
f.write(text)
f.close()
largs = ""
if DrFrame.lastprogargs:
largs = " " + DrFrame.lastprogargs
command = '"' + fname.replace("\\", "/") + '"' + largs
statustext = 'Running ' + DrFrame.txtDocument.GetFilenameTitle()
DrFrame.ExecuteWithPython(command, statustext)
atexit.register(destroyTempfile, fname)
ID_RUN_FROM_BUFFER = DrFrame.GetNewId()
DrFrame.Bind(wx.EVT_MENU, OnRunFromBuffer, id=ID_RUN_FROM_BUFFER)
DrFrame.AddPluginFunction("RunFromBuffer", "Run From Buffer", OnRunFromBuffer)
DrFrame.LoadPluginShortcuts('RunFromBuffer')
DrFrame.programmenu.AppendSeparator()
DrFrame.programmenu.Append(ID_RUN_FROM_BUFFER, "Run From Buffer")