Added history editor to Python shell gadget
svn: r9676
This commit is contained in:
parent
a7a471907b
commit
ef4005e1c9
@ -23,7 +23,6 @@ import sys
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import string
|
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
import gen.lib
|
import gen.lib
|
||||||
@ -373,23 +372,40 @@ class PythonGadget(Gadget):
|
|||||||
return retval
|
return retval
|
||||||
|
|
||||||
def on_enter(self, widget, event):
|
def on_enter(self, widget, event):
|
||||||
if event.keyval == 65293: # enter, where to get this?
|
import gtk
|
||||||
|
if event.keyval == gtk.keysyms.Return:
|
||||||
|
echo = False
|
||||||
buffer = widget.get_buffer()
|
buffer = widget.get_buffer()
|
||||||
line_cnt = buffer.get_line_count()
|
cursor_pos = buffer.get_property("cursor-position")
|
||||||
start = buffer.get_iter_at_line(line_cnt - 1)
|
iter = buffer.get_iter_at_offset(cursor_pos)
|
||||||
end = buffer.get_end_iter()
|
line_cnt = iter.get_line()
|
||||||
|
start = buffer.get_iter_at_line(line_cnt)
|
||||||
|
line_len = iter.get_chars_in_line()
|
||||||
|
buffer_cnt = buffer.get_line_count()
|
||||||
|
if (buffer_cnt - line_cnt) > 1:
|
||||||
|
line_len -= 1
|
||||||
|
echo = True
|
||||||
|
end = buffer.get_iter_at_line_offset(line_cnt, line_len)
|
||||||
line = buffer.get_text(start, end)
|
line = buffer.get_text(start, end)
|
||||||
if line.startswith("> "):
|
self.append_text("\n")
|
||||||
self.append_text("\n")
|
if line.startswith(">"):
|
||||||
line = line[2:]
|
line = line[1:].strip()
|
||||||
|
else:
|
||||||
|
self.append_text("> ")
|
||||||
|
return True
|
||||||
|
if echo:
|
||||||
|
self.append_text("> " + line)
|
||||||
|
end = buffer.get_end_iter()
|
||||||
|
buffer.place_cursor(end)
|
||||||
|
return True
|
||||||
# update states, in case of change:
|
# update states, in case of change:
|
||||||
self.env["dbstate"] = self.gui.dbstate
|
self.env["dbstate"] = self.gui.dbstate
|
||||||
self.env["uistate"] = self.gui.uistate
|
self.env["uistate"] = self.gui.uistate
|
||||||
_retval = None
|
_retval = None
|
||||||
if "_retval" in self.env:
|
if "_retval" in self.env:
|
||||||
del self.env["_retval"]
|
del self.env["_retval"]
|
||||||
exp1 = """_retval = """ + string.strip(line)
|
exp1 = """_retval = """ + line
|
||||||
exp2 = string.strip(line)
|
exp2 = line.strip()
|
||||||
try:
|
try:
|
||||||
_retval = eval(exp2, self.env)
|
_retval = eval(exp2, self.env)
|
||||||
except:
|
except:
|
||||||
@ -403,10 +419,10 @@ class PythonGadget(Gadget):
|
|||||||
if "_retval" in self.env:
|
if "_retval" in self.env:
|
||||||
_retval = self.env["_retval"]
|
_retval = self.env["_retval"]
|
||||||
if _retval != None:
|
if _retval != None:
|
||||||
self.append_text("%s\n" % str(_retval))
|
self.append_text("%s" % str(_retval))
|
||||||
self.append_text("> ")
|
self.append_text("\n> ")
|
||||||
else:
|
end = buffer.get_end_iter()
|
||||||
self.append_text("> ")
|
buffer.place_cursor(end)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user