[gimp] pygimp: pyconsole: comment the code a bit
- From: Kristian Rietveld <kristian src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] pygimp: pyconsole: comment the code a bit
- Date: Fri, 29 Apr 2016 19:52:42 +0000 (UTC)
commit 229285379bf4f7aaea0ce73e71aaf41af3fd658f
Author: Kristian Rietveld <kris loopnest org>
Date: Thu Apr 28 22:05:45 2016 +0200
pygimp: pyconsole: comment the code a bit
So the code can be understood by mere mortals like me.
plug-ins/pygimp/plug-ins/pyconsole.py | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/plug-ins/pygimp/plug-ins/pyconsole.py b/plug-ins/pygimp/plug-ins/pyconsole.py
index 3144359..d791da9 100644
--- a/plug-ins/pygimp/plug-ins/pyconsole.py
+++ b/plug-ins/pygimp/plug-ins/pyconsole.py
@@ -149,6 +149,9 @@ class _ReadLine(object):
except: pass
def raw_input(self, ps=None):
+ '''Show prompt 'ps' and enter input mode until the current input
+ is committed.'''
+
if ps:
self.ps = ps
else:
@@ -171,6 +174,7 @@ class _ReadLine(object):
self.run_on_raw_input = None
self.buffer.insert_at_cursor(run_now + '\n')
+ # Each time the insert mark is modified, move the cursor to it.
def on_buf_mark_set(self, buffer, iter, mark):
if mark is not buffer.get_insert():
return
@@ -186,9 +190,13 @@ class _ReadLine(object):
self.buffer.insert(iter, text)
self.do_insert = False
+ # Make sure that text insertions while in text input mode are properly
+ # committed to the history.
def on_buf_insert(self, buf, iter, text, len):
+ # Bail out if not in input mode.
if not self.in_raw_input or self.do_insert or not len:
return
+
buf.stop_emission("insert-text")
lines = text.splitlines()
need_eol = False
@@ -236,6 +244,8 @@ class _ReadLine(object):
end = line_end
self.__delete(start, end)
+ # We overload the key press event handler to handle "special keys"
+ # when in input mode to make history browsing, completions, etc. work.
def do_key_press_event(self, event, parent_type):
if not self.in_raw_input:
return parent_type.do_key_press_event(self, event)
@@ -290,6 +300,7 @@ class _ReadLine(object):
else:
handled = False
+ # Handle ordinary keys
if not handled:
return parent_type.do_key_press_event(self, event)
else:
@@ -304,20 +315,26 @@ class _ReadLine(object):
self.scroll_to_mark(self.cursor, 0.2)
def __get_cursor(self):
+ '''Returns an iterator at the current cursor position.'''
return self.buffer.get_iter_at_mark(self.cursor)
def __get_start(self):
+ '''Returns an iterator at the start of the input on the current
+ cursor line.'''
+
iter = self.__get_cursor()
iter.set_line_offset(len(self.ps))
return iter
def __get_end(self):
+ '''Returns an iterator at the end of the cursor line.'''
iter = self.__get_cursor()
if not iter.ends_line():
iter.forward_to_line_end()
return iter
def __get_text(self, start, end):
+ '''Get text between 'start' and 'end' markers.'''
return self.buffer.get_text(start, end, False)
def __move_cursor_to(self, iter):
@@ -426,21 +443,30 @@ class _ReadLine(object):
return None
def _get_line(self):
+ '''Return the current input behind the prompt.'''
start = self.__get_start()
end = self.__get_end()
return self.buffer.get_text(start, end, False)
def __replace_line(self, new_text):
+ '''Replace the current input with 'new_text' '''
start = self.__get_start()
end = self.__get_end()
self.__delete(start, end)
self.__insert(end, new_text)
def _commit(self):
+ '''Commit the input entered on the current line.'''
+
+ # Find iterator and end of cursor line.
end = self.__get_cursor()
if not end.ends_line():
end.forward_to_line_end()
+
+ # Get text at current line.
text = self._get_line()
+
+ # Move cursor to the end of the line, insert new line.
self.__move_cursor_to(end)
self.freeze_undo()
self.__insert(end, "\n")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]