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