[Sugar-devel] [PATCH] Enhancements to Pippy UI

anishmangal2002 at gmail.com anishmangal2002 at gmail.com
Thu Jun 10 17:07:03 EDT 2010


From: anishmangal2002 <anishmangal2002 at gmail.com>

[1] Added a standard 'Edit' toolbar having undo, redo, copy and
    paste buttons which also work when the activity is shared.

[2] When the activity is shared, the treeview in the activity host's
    window does not disappear so he can load examples by clicking
    on them. For other participants, the treeview is kept hidden.

[3] Bump version to v37

Tested alone on sugar-jhbuild-0.88 and as a shared session with
another sugar-jhbuild-0.88 session. (Thanks walterbender)

Signed-off-by: anishmangal2002 <anishmangal2002 at gmail.com>
---
 NEWS                   |    7 +++++++
 activity/activity.info |    2 +-
 pippy_app.py           |   34 ++++++++++++++++++++++++++++++++--
 3 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/NEWS b/NEWS
index b19533b..ab6ba9e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+37
+* Added a standard 'Edit' toolbar having undo, redo, copy and  
+  paste buttons which also work when the activity is shared.
+* When the activity is shared, the treeview in the activity host's
+  window does not disappear so he can load examples by clicking 
+  on them. For other participants, the treeview is kept hidden.
+
 36
 * Add COPYING based on activity.info license field, verify source file
   licenses, include LICENSE from Elements upstream SVN, fixes
diff --git a/activity/activity.info b/activity/activity.info
index 26108f7..1664fd6 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -4,7 +4,7 @@ bundle_id = org.laptop.Pippy
 service_name = org.laptop.Pippy
 class = pippy_app.PippyActivity
 icon = activity-icon
-activity_version = 36
+activity_version = 37
 mime_types = text/x-python, pickle/groupthink-pippy
 show_launcher = yes
 
diff --git a/pippy_app.py b/pippy_app.py
index 8edad4e..8f3580e 100644
--- a/pippy_app.py
+++ b/pippy_app.py
@@ -33,6 +33,7 @@ from gettext import gettext as _
 from activity import ViewSourceActivity, TARGET_TYPE_TEXT
 from sugar.activity.activity import ActivityToolbox, \
      get_bundle_path, get_bundle_name
+from sugar.activity import activity
 from sugar.graphics import style
 from sugar.graphics.toolbutton import ToolButton
 
@@ -80,6 +81,16 @@ class PippyActivity(ViewSourceActivity, groupthink.sugar_tools.GroupActivity):
         palette.menu.append(menu_item)
         menu_item.show()
 
+        #### EDIT TOOLBAR
+        self._edit_toolbar = activity.EditToolbar()
+        toolbox.add_toolbar(_('Edit'), self._edit_toolbar)
+        self._edit_toolbar.show()
+
+        self._edit_toolbar.undo.connect('clicked', self.undobutton_cb)
+        self._edit_toolbar.redo.connect('clicked', self.redobutton_cb)
+        self._edit_toolbar.copy.connect('clicked', self.copybutton_cb)
+        self._edit_toolbar.paste.connect('clicked', self.pastebutton_cb)
+
         # The "go" button
         goicon_bw = gtk.Image()
         goicon_bw.set_from_file("%s/icons/run_bw.svg" % os.getcwd())
@@ -241,7 +252,8 @@ class PippyActivity(ViewSourceActivity, groupthink.sugar_tools.GroupActivity):
         return self.hpane
 
     def when_shared(self):
-        self.hpane.remove(self.hpane.get_child1())
+        if not self.initiating:
+            self.hpane.remove(self.hpane.get_child1())
         global text_buffer
         self.cloud.sharefield = groupthink.gtk_tools.TextBufferSharePoint(text_buffer)
 
@@ -297,6 +309,24 @@ class PippyActivity(ViewSourceActivity, groupthink.sugar_tools.GroupActivity):
         self._vte.grab_focus()
         self._vte.feed("\x1B[H\x1B[J\x1B[0;39m")
 
+    def undobutton_cb(self, button):
+        global text_buffer
+        if text_buffer.can_undo():
+            text_buffer.undo()
+
+    def redobutton_cb(self, button):
+        global text_buffer
+        if text_buffer.can_redo():
+            text_buffer.redo()
+
+    def copybutton_cb(self, button):
+        global text_buffer
+        text_buffer.copy_clipboard(gtk.Clipboard())
+
+    def pastebutton_cb(self, button):
+        global text_buffer
+        text_buffer.paste_clipboard(gtk.Clipboard(), None, True)
+
     def gobutton_cb(self, button):
         from shutil import copy2
         self.stopbutton_cb(button) # try stopping old code first.
@@ -501,7 +531,7 @@ PIPPY_DEFAULT_ICON = \
 
 def pippy_activity_version():
     """Returns the version number of the generated activity bundle."""
-    return 34
+    return 37
 def pippy_activity_extra_files():
     """Returns a map of 'extra' files which should be included in the
     generated activity bundle."""
-- 
1.7.0.4



More information about the Sugar-devel mailing list