diff options
author | Daniel Francis <santiago.danielfrancis@gmail.com> | 2011-12-16 22:11:18 (GMT) |
---|---|---|
committer | Daniel Francis <santiago.danielfrancis@gmail.com> | 2011-12-16 22:11:18 (GMT) |
commit | 5f13ea95102b9b8b5e5359f86e70d1d75524c5a7 (patch) | |
tree | 753275f5ecfa68ceba4bcf49414470c680287b0d | |
parent | 3fb33ac32d3e54e26ee73f82f846fad7708e2bb0 (diff) |
GObject signal handling implemented
-rw-r--r-- | activity.py | 43 | ||||
-rw-r--r-- | editor.py | 49 | ||||
-rw-r--r-- | font_options.py | 10 |
3 files changed, 54 insertions, 48 deletions
diff --git a/activity.py b/activity.py index c9948a4..586787d 100644 --- a/activity.py +++ b/activity.py @@ -42,6 +42,7 @@ from sugar.activity.widgets import EditToolbar, StopButton, \ from sugar.datastore import datastore from sugar.activity import activity +from pep8_check import PEP8_Check from font_options import FontToolbarButton from editor import Editor, LANGUAGE_MANAGER, LANGUAGES import file_choosers @@ -58,7 +59,9 @@ class JAMEdit(activity.Activity): # ****** Editor ****** - self.editor = Editor(self) + self.editor = Editor() + self.editor.connect("pep8-aviable", self.enable_pep8) + self.editor.set_size_request(800, 790) scroll = gtk.ScrolledWindow() scroll.set_policy(gtk.POLICY_AUTOMATIC, @@ -186,9 +189,9 @@ class JAMEdit(activity.Activity): iconentry.ICON_ENTRY_PRIMARY, 'system-search') search_entry.add_clear_button() search_entry.connect('activate', - self.editor._search_entry_activate_cb) + self._search_entry_activate_cb) search_entry.connect('changed', - self.editor._search_entry_changed_cb) + self._search_entry_changed_cb) search_item = gtk.ToolItem() search_item.add(search_entry) self.toolbox.toolbar.insert(search_item, -1) @@ -253,11 +256,40 @@ class JAMEdit(activity.Activity): self.set_toolbar_box(self.toolbar_box) # Barra de estado de PEP8 / PEP8 status bar + self.pep8 = PEP8_Check() + self.pep8_bar = gtk.Statusbar() + self.pep8.connect("show-bar", (lambda w, bar: bar.show_all()), self.pep8_bar) + self.pep8.connect("hide-bar", (lambda w, bar: bar.hide()), self.pep8_bar) self.pep8_bar.label = gtk.Label() + self.pep8.connect("bar-text", (lambda w, t, l: l.set_text(t)), self.pep8_bar.label) self.pep8_bar.add(self.pep8_bar.label) vbox.pack_end(self.pep8_bar, False, True, 0) + def _search_entry_activate_cb(self, entry): + self.editor.set_search_text(entry.props.text) + self.update_search_buttons() + + def _search_entry_changed_cb(self, entry): + self.editor.set_search_text(entry.props.text) + self.update_search_buttons() + + def update_search_buttons(self): + if len(self.editor.search_text) == 0: + self._search_prev.props.sensitive = False + self._search_next.props.sensitive = False + else: + prev_result = self.editor.get_next_result('backward') + next_result = self.editor.get_next_result('forward') + _1 = prev_result != None + _2 = next_result != None + self._search_prev.props.sensitive = prev_result != _1 + self._search_next.props.sensitive = next_result != _1 + + def enable_pep8(self, widget, active): + self.edit_toolbar.pep8_btn.set_visible(active) + self.edit_toolbar.pep8_datetime_separator.set_draw(active) + def change_font(self, widget, family, face, size): self.editor.modify_font( pango.FontDescription("%s %s %d" % (family, face, size))) @@ -266,8 +298,7 @@ class JAMEdit(activity.Activity): return self.editor.get_pango_context() def pep8_check(self, widget): - self.editor.pep8.check_file(self.editor._get_all_text(), - self.editor) + self.pep8.check_file(self.editor) def close(self, skip_save=False): close = True @@ -277,7 +308,7 @@ class JAMEdit(activity.Activity): activity.Activity.close(self) def open_file(self, widget, from_journal=False): - self.editor.pep8.check_exit() + self.pep8.check_exit(self.editor.buffer, self.editor._get_all_text()) self.save_file(None, type="exit") if not from_journal: file_path, remember = file_choosers.open_file_dialog() @@ -26,15 +26,14 @@ import datetime import time import locale +import gobject +import pango import gtk import gtksourceview2 -import pango from sugar.graphics.combobox import ComboBox from sugar.graphics.toolcombobox import ToolComboBox -from pep8_check import PEP8_Check - STYLE_MANAGER = gtksourceview2.style_scheme_manager_get_default() # Style Files extracted from / Archivos Style extraidos de : # http://live.gnome.org/GtkSourceView/StyleSchemes @@ -46,8 +45,10 @@ LANGUAGES = LANGUAGE_MANAGER.get_language_ids() class Editor(gtksourceview2.View): - - def __init__(self, activity): + __gsignals__ = {"pep8-aviable": (gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + (gobject.TYPE_BOOLEAN,)),} + def __init__(self): gtksourceview2.View.__init__(self) self.lang = None @@ -75,10 +76,6 @@ class Editor(gtksourceview2.View): self.buffer = gtksourceview2.Buffer(tag_table=self._tagtable) self.set_buffer(self.buffer) - self.activity = activity - - self.pep8 = PEP8_Check(self.activity) - self.show_all() def _set_style(self, widget): @@ -153,20 +150,14 @@ class Editor(gtksourceview2.View): self.buffer.set_highlight_syntax(True) self.buffer.set_language(self.lang) if id == "python": - self.activity.edit_toolbar.pep8_btn.show() - self.activity.edit_toolbar. \ - pep8_datetime_separator.set_draw(True) + self.emit("pep8-aviable", True) else: - self.activity.edit_toolbar.pep8_btn.hide() - self.activity.edit_toolbar. \ - pep8_datetime_separator.set_draw(False) + self.emit("pep8-aviable", False) elif name == 0: self.buffer.set_highlight_syntax(False) self.lang = None - self.activity.edit_toolbar.pep8_btn.hide() - self.activity.edit_toolbar. \ - pep8_datetime_separator.set_draw(False) + self.emit("pep8-aviable", False) def _search_and_active_language(self, mimetype): encontrado = False @@ -183,22 +174,14 @@ class Editor(gtksourceview2.View): encontrado = True if id == "python": - self.activity.edit_toolbar. \ - pep8_btn.show() - self.activity.edit_toolbar. \ - pep8_datetime_separator.set_draw(True) + self.emit("pep8-aviable", True) else: - self.activity.edit_toolbar. \ - pep8_btn.hide() - self.activity.edit_toolbar. \ - pep8_datetime_separator.set_draw(False) + self.emit("pep8-aviable", False) if not encontrado: self.buffer.set_highlight_syntax(False) self.lang_combo.set_active(0) self.lang = None - self.activity.edit_toolbar.pep8_btn.hide() - self.activity.edit_toolbar.pep8_datetime_separator. \ - set_draw(False) + self.emit("pep8-aviable", False) def _get_all_text(self): start = self.buffer.get_start_iter() @@ -214,14 +197,6 @@ class Editor(gtksourceview2.View): date_time = str(today) + " " + _time + "-" + zone self.buffer.insert_at_cursor(date_time) - def _search_entry_activate_cb(self, entry): - self.set_search_text(entry.props.text) - self._update_search_buttons() - - def _search_entry_changed_cb(self, entry): - self.set_search_text(entry.props.text) - self._update_search_buttons() - def _search_prev_cb(self, button): self.search_next('backward') self._update_search_buttons() diff --git a/font_options.py b/font_options.py index b257e4d..a89aa6b 100644 --- a/font_options.py +++ b/font_options.py @@ -30,13 +30,13 @@ from sugar.activity.widgets import ToolbarButton class FontToolbarButton(ToolbarButton): __gsignals__ = {'load-pango-context': (gobject.SIGNAL_RUN_LAST, - gobject.TYPE_PYOBJECT, - tuple()), + gobject.TYPE_PYOBJECT, + tuple()), 'font-changed': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, - (gobject.TYPE_STRING, - gobject.TYPE_STRING, - gobject.TYPE_INT))} + (gobject.TYPE_STRING, + gobject.TYPE_STRING, + gobject.TYPE_INT))} def __init__(self): ToolbarButton.__init__(self) |