The former patch cut some comments that should have been cut (and now
have been) in the initial visual patch.  This eliminates those parts
of the patch.

- Eben

On Wed, Apr 16, 2008 at 11:24 AM, Eben Eliason <[EMAIL PROTECTED]> wrote:
>
>
From 2b22fbce63388a82aa57a91d1247c481fdf4ff3b Mon Sep 17 00:00:00 2001
From: Eben Eliason <[EMAIL PROTECTED]>
Date: Wed, 16 Apr 2008 00:29:14 -0400
Subject: [PATCH] Add support for inline renaming of Journal entries.

This provides support for renaming Journal entries
directly within the list view, by clicking on the
title field.
---
 collapsedentry.py |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/collapsedentry.py b/collapsedentry.py
index 9fff01a..26a9642 100644
--- a/collapsedentry.py
+++ b/collapsedentry.py
@@ -28,6 +28,7 @@ from sugar.graphics.xocolor import XoColor
 from sugar.graphics import style
 from sugar.datastore import datastore
 from sugar.graphics.roundbox import CanvasRoundBox
+from sugar.graphics.entry import CanvasEntry
 
 from keepicon import KeepIcon
 import misc
@@ -84,7 +85,17 @@ class CollapsedEntry(hippo.CanvasBox):
         self._icon = self._create_icon()
         self.append(self._icon)
 
+        self._title_entry = self._create_title_entry()
+        self._title_entry.props.widget.connect('focus-out-event',
+                                           self._title_entry_focus_out_event_cb)
+        self._title_entry.connect('key-press-event',
+                                  self._title_entry_key_press_event_cb)
+        self.append(self._title_entry, hippo.PACK_EXPAND)
+        self._title_entry.set_visible(False)
+
         self._title = self._create_title()
+        self._title.connect('button_release_event',
+                            self._title_button_release_event_cb)
         self.append(self._title, hippo.PACK_EXPAND)
 
         self._buddies_list = self._create_buddies_list()
@@ -135,6 +146,11 @@ class CollapsedEntry(hippo.CanvasBox):
                                  size_mode=hippo.CANVAS_SIZE_ELLIPSIZE_END)
         return title
 
+    def _create_title_entry(self):
+        title = CanvasEntry()
+        title.set_background(style.COLOR_WHITE.get_html())
+        return title
+
     def _create_buddies_list(self):
         return BuddyList([], self._BUDDIES_COL_WIDTH)
 
@@ -223,6 +239,43 @@ class CollapsedEntry(hippo.CanvasBox):
         self._jobject.resume()
         return True
 
+    def _title_button_release_event_cb(self, button, event):
+        self._title.set_visible(False)
+        self._title_entry.set_visible(True)
+        self._title_entry.props.widget.grab_focus()
+
+    def _title_entry_focus_out_event_cb(self, entry, event):
+        self._set_title(entry.props.text)
+        self._title_entry.set_visible(False)
+        self._title.set_visible(True)
+
+    def _title_entry_key_press_event_cb(self, entry, event):
+        if event.key == hippo.KEY_RETURN:
+            self._set_title(entry.props.text)
+            self._title_entry.set_visible(False)
+            self._title.set_visible(True)
+        elif event.key == hippo.KEY_ESCAPE:
+            entry.props.text = self._title.props.text
+            self._title_entry.set_visible(False)
+            self._title.set_visible(True)
+
+    def _set_title(self, title):
+        if title == '':
+            self._title_entry.props.text = self._title.props.text
+        elif self._title.props.text != title:
+            self._title.props.text = title
+            self._jobject.metadata['title'] = title
+            self._jobject.metadata['title_set_by_user'] = '1'
+            datastore.write(self._jobject, update_mtime=False,
+                            reply_handler=self._datastore_write_cb,
+                            error_handler=self._datastore_write_error_cb)
+
+    def _datastore_write_cb(self):
+        pass
+
+    def _datastore_write_error_cb(self):
+        logging.error('CollapsedEntry._datastore_write_error_cb: %r' % error)
+
     def _detail_button_release_event_cb(self, button, event):
         logging.debug('_detail_button_release_event_cb')
         if not self._is_in_progress():
@@ -256,6 +309,7 @@ class CollapsedEntry(hippo.CanvasBox):
             self._icon.props.fill_color=style.COLOR_TRANSPARENT.get_svg()
             self._icon.props.stroke_color=style.COLOR_BLACK.get_svg()
             self._title.props.text = self._format_title() + _(' Activity')
+            self._title_entry.props.text = self._format_title() + _(' Activity')
         else:    
             if jobject.metadata.has_key('icon-color') and \
                    jobject.metadata['icon-color']:
@@ -264,6 +318,7 @@ class CollapsedEntry(hippo.CanvasBox):
             else:
                 self._icon.props.xo_color = None        
             self._title.props.text = self._format_title()
+            self._title_entry.props.text = self._format_title()
 
         self._buddies_list.set_model(self._decode_buddies())
 
-- 
1.5.3.3

_______________________________________________
Sugar mailing list
[email protected]
http://lists.laptop.org/listinfo/sugar

Reply via email to