summaryrefslogtreecommitdiff
path: root/grc/gui
diff options
context:
space:
mode:
Diffstat (limited to 'grc/gui')
-rw-r--r--grc/gui/Dialogs.py22
-rw-r--r--grc/gui/MainWindow.py4
2 files changed, 23 insertions, 3 deletions
diff --git a/grc/gui/Dialogs.py b/grc/gui/Dialogs.py
index 5b3b420d3b..04e4f0a862 100644
--- a/grc/gui/Dialogs.py
+++ b/grc/gui/Dialogs.py
@@ -35,12 +35,32 @@ class TextDisplay(gtk.TextView):
text_buffer = gtk.TextBuffer()
text_buffer.set_text(text)
self.set_text = text_buffer.set_text
- self.insert = lambda line: text_buffer.insert(text_buffer.get_end_iter(), line)
gtk.TextView.__init__(self, text_buffer)
self.set_editable(False)
self.set_cursor_visible(False)
self.set_wrap_mode(gtk.WRAP_WORD_CHAR)
+ def insert(self, line):
+ # make backspaces work
+ line = self._consume_backspaces(line)
+ # add the remaining text to buffer
+ self.get_buffer().insert(self.get_buffer().get_end_iter(), line)
+
+ def _consume_backspaces(self, line):
+ """removes text from the buffer if line starts with \b*"""
+ if not line: return
+ # for each \b delete one char from the buffer
+ back_count = 0
+ start_iter = self.get_buffer().get_end_iter()
+ while line[back_count] == '\b':
+ # stop at the beginning of a line
+ if not start_iter.starts_line(): start_iter.backward_char()
+ back_count += 1
+ # remove chars
+ self.get_buffer().delete(start_iter, self.get_buffer().get_end_iter())
+ # return remaining text
+ return line[back_count:]
+
def MessageDialogHelper(type, buttons, title=None, markup=None):
"""
Create a modal message dialog and run it.
diff --git a/grc/gui/MainWindow.py b/grc/gui/MainWindow.py
index 677f202e1f..5dbd56efd3 100644
--- a/grc/gui/MainWindow.py
+++ b/grc/gui/MainWindow.py
@@ -154,8 +154,8 @@ class MainWindow(gtk.Window):
"""
self.text_display.insert(line)
vadj = self.reports_scrolled_window.get_vadjustment()
- vadj.set_value(vadj.upper)
- vadj.emit('changed')
+ vadj.value = vadj.upper - vadj.page_size
+ vadj.changed()
############################################################
# Pages: create and close