[Sugar-devel] [PATCH sugar] Journal: add alert to confirm before erasing an entry
Simon Schampijer
simon at schampijer.de
Wed Aug 22 10:02:44 EDT 2012
Erasing an entry in the Journal does not ask for confirmation
before doing the erase. This patch adds an alert to the ListView
and the DetailView that asks for confirmation before doing the
erase. This is part of the touch interaction work [1].
The wording of the alert has been finallized with Gary
yesterday.
Signed-off-by: Simon Schampijer <simon at laptop.org>
[1] http://wiki.sugarlabs.org/go/Features/Touch/Development#Journal
---
src/jarabe/journal/journaltoolbox.py | 31 +++++++++++++++++++++++++------
src/jarabe/journal/palettes.py | 22 +++++++++++++++++++++-
2 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/src/jarabe/journal/journaltoolbox.py b/src/jarabe/journal/journaltoolbox.py
index 2aa4153..9a5f5a2 100644
--- a/src/jarabe/journal/journaltoolbox.py
+++ b/src/jarabe/journal/journaltoolbox.py
@@ -36,6 +36,7 @@ from sugar.graphics.combobox import ComboBox
from sugar.graphics.menuitem import MenuItem
from sugar.graphics.icon import Icon
from sugar.graphics.xocolor import XoColor
+from sugar.graphics.alert import Alert
from sugar.graphics import iconentry
from sugar.graphics import style
from sugar import mime
@@ -45,6 +46,7 @@ from jarabe.journal import misc
from jarabe.journal import model
from jarabe.journal.palettes import ClipboardMenu
from jarabe.journal.palettes import VolumeMenu
+from jarabe.journal import journalwindow
_AUTOSEARCH_TIMEOUT = 1000
@@ -438,12 +440,29 @@ class EntryToolbar(gtk.Toolbar):
_('Error'))
def _erase_button_clicked_cb(self, button):
- registry = bundleregistry.get_registry()
-
- bundle = misc.get_bundle(self._metadata)
- if bundle is not None and registry.is_installed(bundle):
- registry.uninstall(bundle)
- model.delete(self._metadata['uid'])
+ alert = Alert()
+ erase_string = _('Erase')
+ alert.props.title = erase_string
+ alert.props.msg = _('Do you want to permanently erase \"%s\"?') \
+ % self._metadata['title']
+ icon = Icon(icon_name='dialog-cancel')
+ alert.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), icon)
+ icon.show()
+ ok_icon = Icon(icon_name='dialog-ok')
+ alert.add_button(gtk.RESPONSE_OK, erase_string, ok_icon)
+ ok_icon.show()
+ alert.connect('response', self.__erase_alert_response_cb)
+ journalwindow.get_journal_window().add_alert(alert)
+ alert.show()
+
+ def __erase_alert_response_cb(self, alert, response_id):
+ journalwindow.get_journal_window().remove_alert(alert)
+ if response_id is gtk.RESPONSE_OK:
+ registry = bundleregistry.get_registry()
+ bundle = misc.get_bundle(self._metadata)
+ if bundle is not None and registry.is_installed(bundle):
+ registry.uninstall(bundle)
+ model.delete(self._metadata['uid'])
def _resume_menu_item_activate_cb(self, menu_item, service_name):
misc.resume(self._metadata, service_name)
diff --git a/src/jarabe/journal/palettes.py b/src/jarabe/journal/palettes.py
index 8fc1e5d..f0d686f 100644
--- a/src/jarabe/journal/palettes.py
+++ b/src/jarabe/journal/palettes.py
@@ -29,6 +29,7 @@ from sugar.graphics.palette import Palette
from sugar.graphics.menuitem import MenuItem
from sugar.graphics.icon import Icon
from sugar.graphics.xocolor import XoColor
+from sugar.graphics.alert import Alert
from sugar import mime
from jarabe.model import friends
@@ -36,6 +37,7 @@ from jarabe.model import filetransfer
from jarabe.model import mimeregistry
from jarabe.journal import misc
from jarabe.journal import model
+from jarabe.journal import journalwindow
class ObjectPalette(Palette):
@@ -142,7 +144,25 @@ class ObjectPalette(Palette):
_('Error'))
def __erase_activate_cb(self, menu_item):
- model.delete(self._metadata['uid'])
+ alert = Alert()
+ erase_string = _('Erase')
+ alert.props.title = erase_string
+ alert.props.msg = _('Do you want to permanently erase \"%s\"?') \
+ % self._metadata['title']
+ icon = Icon(icon_name='dialog-cancel')
+ alert.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), icon)
+ icon.show()
+ ok_icon = Icon(icon_name='dialog-ok')
+ alert.add_button(gtk.RESPONSE_OK, erase_string, ok_icon)
+ ok_icon.show()
+ alert.connect('response', self.__erase_alert_response_cb)
+ journalwindow.get_journal_window().add_alert(alert)
+ alert.show()
+
+ def __erase_alert_response_cb(self, alert, response_id):
+ journalwindow.get_journal_window().remove_alert(alert)
+ if response_id is gtk.RESPONSE_OK:
+ model.delete(self._metadata['uid'])
def __detail_activate_cb(self, menu_item):
self.emit('detail-clicked', self._metadata['uid'])
--
1.7.11.4
More information about the Sugar-devel
mailing list