From 1442d651fcf2489fbc703836970639901d383940 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Fri, 10 May 2013 00:09:25 +0000 Subject: Alert before overwriting blocks --- diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index eb9478f..c62ac76 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -1521,6 +1521,46 @@ before making changes to your Turtle Blocks program')) return True return False + def _save_stack_alert(self, name, data, macro_path): + if self.running_sugar: + from sugar.graphics.alert import Alert + from sugar.graphics.icon import Icon + + alert = Alert() + alert.props.title = _('Save stack') + alert.props.msg = _('Really overwrite stack?') + + cancel_icon = Icon(icon_name='dialog-cancel') + alert.add_button(gtk.RESPONSE_CANCEL, _('Cancel'), + cancel_icon) + stop_icon = Icon(icon_name='dialog-ok') + alert.add_button(gtk.RESPONSE_OK, + '%s %s' % (_('Overwrite stack'), name), + stop_icon) + + self.activity.add_alert(alert) + alert.connect('response', + self._overwrite_stack_dialog_response_cb, data, + macro_path) + else: + msg = _('Really overwrite stack?') + dialog = gtk.MessageDialog(self.parent, 0, gtk.MESSAGE_WARNING, + gtk.BUTTONS_OK_CANCEL, msg) + dialog.set_title('%s %s' % (_('Overwrite stack'), name)) + answer = dialog.run() + dialog.destroy() + if answer == gtk.RESPONSE_OK: + self._save_stack(data, macro_path) + + def _overwrite_stack_dialog_response_cb(self, alert, response_id, + data, macro_path): + self.activity.remove_alert(alert) + if response_id == gtk.RESPONSE_OK: + self._save_stack(data, macro_path) + + def _save_stack(self, data, macro_path): + data_to_file(data, macro_path) + def _delete_stack_alert(self, blk): if self.running_sugar: from sugar.graphics.alert import Alert @@ -1986,9 +2026,11 @@ before making changes to your Turtle Blocks program')) macro_path = os.path.join( self.macros_path, '%s.tb' % (name)) # Make sure name is unique - while os.path.exists(macro_path): - macro_path = increment_name(macro_path) - data_to_file(data, macro_path) + if os.path.exists(macro_path): + self._save_stack_alert(name, data, macro_path) + else: + self._save_stack(data, macro_path) + self.drag_group = None elif self.copying_blocks: clipboard = gtk.Clipboard() debug_output('Serialize blocks and copy to clipboard', -- cgit v0.9.1