diff options
author | Dieter Verfaillie <dieterv@optionexplicit.be> | 2011-08-22 07:25:32 +0200 |
---|---|---|
committer | Dieter Verfaillie <dieterv@optionexplicit.be> | 2011-08-24 19:02:40 +0200 |
commit | f29d3a85a275a39e8481484779264b0dea1160ab (patch) | |
tree | 9e0ffc6c1b84d75750d6ec8b576ec1aec14c56fc /demos | |
parent | ecd1eb00b19733da3f2e3d7935792378f34cab19 (diff) | |
download | pygobject-f29d3a85a275a39e8481484779264b0dea1160ab.tar.gz |
[gtk-demo] optimize source colorizer by only preparing iters for known colorized tokens
Diffstat (limited to 'demos')
-rwxr-xr-x | demos/gtk-demo/gtk-demo.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/demos/gtk-demo/gtk-demo.py b/demos/gtk-demo/gtk-demo.py index 4f9190f3..de31768c 100755 --- a/demos/gtk-demo/gtk-demo.py +++ b/demos/gtk-demo/gtk-demo.py @@ -330,23 +330,27 @@ class GtkDemoWindow(Gtk.Window): is_decorator = False is_func = False + def prepare_iters(): + start_iter.set_line(srow-1) + start_iter.set_line_offset(scol) + end_iter.set_line(erow-1) + end_iter.set_line_offset(ecol) + for x in tokenize.generate_tokens(InputStream(data).readline): # x has 5-tuples tok_type, tok_str = x[0], x[1] srow, scol = x[2] erow, ecol = x[3] - start_iter.set_line(srow-1) - start_iter.set_line_offset(scol) - end_iter.set_line(erow-1) - end_iter.set_line_offset(ecol) - if tok_type == tokenize.BACKQUOTE: + prepare_iters() self.source_buffer.apply_tag_by_name('bold', start_iter, end_iter) elif tok_type == tokenize.COMMENT: + prepare_iters() self.source_buffer.apply_tag_by_name('comment', start_iter, end_iter) elif tok_type == tokenize.NAME: if tok_str in keyword.kwlist or tok_str in builtin_constants: + prepare_iters() self.source_buffer.apply_tag_by_name('keyword', start_iter, end_iter) if tok_str == 'def' or tok_str == 'class': @@ -354,18 +358,24 @@ class GtkDemoWindow(Gtk.Window): is_func = True continue elif tok_str == 'self': + prepare_iters() self.source_buffer.apply_tag_by_name('italic', start_iter, end_iter) else: if is_func is True: + prepare_iters() self.source_buffer.apply_tag_by_name('bold', start_iter, end_iter) elif is_decorator is True: + prepare_iters() self.source_buffer.apply_tag_by_name('decorator', start_iter, end_iter) elif tok_type == tokenize.STRING: + prepare_iters() self.source_buffer.apply_tag_by_name('string', start_iter, end_iter) elif tok_type == tokenize.NUMBER: + prepare_iters() self.source_buffer.apply_tag_by_name('number', start_iter, end_iter) elif tok_type == tokenize.OP: if tok_str == '@': + prepare_iters() self.source_buffer.apply_tag_by_name('decorator', start_iter, end_iter) # next token is going to be the decorator name |