From ddb4baffde81111ac725cd6e0430326826b73496 Mon Sep 17 00:00:00 2001
From: Eben Eliason <[EMAIL PROTECTED]>
Date: Tue, 15 Apr 2008 21:43:42 -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 | 69 +++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 56 insertions(+), 13 deletions(-)
diff --git a/collapsedentry.py b/collapsedentry.py
index 6ea5b0d..22db243 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
@@ -78,21 +79,23 @@ class CollapsedEntry(hippo.CanvasBox):
self._allow_resume = allow_resume
self._is_selected = False
- #self._frame = CanvasRoundBox()
- #self._frame = hippo.CanvasBox(background_color=style.COLOR_WHITE.get_int(),
- # orientation=hippo.ORIENTATION_HORIZONTAL)
- #self._frame.connect_after('button-release-event', self._frame_button_release_event_cb)
- #self.append(self._frame, hippo.PACK_EXPAND)
-
- #self.connect_after('button-release-event', self._frame_button_release_event_cb)
-
self._keep_icon = self._create_keep_icon()
self.append(self._keep_icon)
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()
@@ -101,11 +104,6 @@ class CollapsedEntry(hippo.CanvasBox):
self._date = self._create_date()
self.append(self._date)
- #self._resume_button = self._create_resume_button()
- #self.append(self._resume_button)
- #if not self._allow_resume:
- # self.set_child_visible(self._resume_button, False)
-
self._detail_button = self._create_detail_button()
self.append(self._detail_button)
if not self._allow_resume:
@@ -148,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)
@@ -239,6 +242,44 @@ 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():
@@ -272,6 +313,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']:
@@ -280,6 +322,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