Development Team/Almanac: Difference between revisions
mNo edit summary |
No edit summary |
||
| Line 58: | Line 58: | ||
== Text and Graphics for Sugar Activities == | == Text and Graphics for Sugar Activities == | ||
* [[Development Team/Almanac/Pango|Pango]] | * [[Development Team/Almanac/Pango|Pango]] | ||
=== How do I create a text box for code editing? === | |||
You can use gtksourceview2 | |||
<pre> | |||
import gtk | |||
import gtksourceview2 | |||
from sugar.graphics import style | |||
... | |||
# set up the buffer | |||
buffer = gtksourceview2.Buffer() | |||
if hasattr(buffer, 'set_highlight'): # handle different API versions | |||
buffer.set_highlight(True) | |||
else: | |||
buffer.set_highlight_syntax(True) | |||
# set mime type for the buffer | |||
lang_manager = gtksourceview2.language_manager_get_default() | |||
if hasattr(lang_manager, 'list_languages'): # again, handle different APIs | |||
langs = lang_manager.list_languages() | |||
else: | |||
lang_ids = lang_manager.get_language_ids() | |||
langs = [lang_manager.get_language(lang_id) | |||
for lang_id in lang_ids] | |||
for lang in langs: | |||
for m in lang.get_mime_types(): | |||
if m == mime_type: # <-- this is the mime type you want | |||
buffer.set_language(lang) | |||
# set up the view object, use it like gtk.TextView | |||
view = gtksourceview2.View(buffer) | |||
view.set_size_request(300, 450) | |||
view.set_editable(True) | |||
view.set_cursor_visible(True) | |||
view.set_show_line_numbers(True) | |||
view.set_wrap_mode(gtk.WRAP_CHAR) | |||
view.set_right_margin_position(80) | |||
#view.set_highlight_current_line(True) #FIXME: Ugly color | |||
view.set_auto_indent(True) | |||
view.modify_font(pango.FontDescription("Monospace " + | |||
str(style.FONT_SIZE))) | |||
</pre> | |||
To set the text in the buffer: | |||
<pre> | |||
buffer.set_text(text) | |||
</pre> | |||
To get all the text: | |||
<pre> | |||
text = buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter()) | |||
</pre> | |||
You can find more in the Pippy source and in jarabe.view.sourceview. | |||
== Audio & Video == | == Audio & Video == | ||