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 Sugar@lists.laptop.org http://lists.laptop.org/listinfo/sugar