Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel 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)
commit5f13ea95102b9b8b5e5359f86e70d1d75524c5a7 (patch)
tree753275f5ecfa68ceba4bcf49414470c680287b0d
parent3fb33ac32d3e54e26ee73f82f846fad7708e2bb0 (diff)
GObject signal handling implemented
-rw-r--r--activity.py43
-rw-r--r--editor.py49
-rw-r--r--font_options.py10
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()
diff --git a/editor.py b/editor.py
index 947c9ee..16528bb 100644
--- a/editor.py
+++ b/editor.py
@@ -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)