On Fri, May 21, 2010 at 12:44:04AM -0500, Steve Borho wrote: > On Fri, May 21, 2010 at 12:24 AM, David Wilhelm <d...@jumbledpile.com> wrote: > > Maybe everything should be in hgtk/thgshelve.py? > > Nah, looks good. I'll do a better review in the morning (~1am here) > and most likely push it.
Works for me. Some warning strings are fixed in the attached patch.
# HG changeset patch # User David Wilhelm <d...@jumbledpile.com> # Date 1274416936 25200 # Node ID e4643204c1390a84999665c226668c00ca80dd01 # Parent 0fffba65b11d26de51bc3446d3e329bc359ad0c0 shelve: add 'abandon shelf contents' Closes #700 diff --git a/tortoisehg/hgtk/thgshelve.py b/tortoisehg/hgtk/thgshelve.py --- a/tortoisehg/hgtk/thgshelve.py +++ b/tortoisehg/hgtk/thgshelve.py @@ -72,6 +72,9 @@ self.shelve_clicked, tip=_('set aside selected changes')) self.unshelve_btn = self.make_toolbutton(gtk.STOCK_EDIT, _('Unshelve'), self.unshelve_clicked, tip=_('restore shelved changes')) + self.abandon_btn = self.make_toolbutton(gtk.STOCK_CANCEL, _('Abandon'), + self.abandon_clicked, tip=_('abandon shelved changes')) + tbbuttons.insert(0, self.abandon_btn) tbbuttons.insert(0, self.unshelve_btn) tbbuttons.insert(0, self.shelve_btn) return tbbuttons @@ -130,9 +133,11 @@ if status: self.shelve_btn.set_sensitive(len(self.filemodel) > 0) self.unshelve_btn.set_sensitive(self.has_shelve_file()) + self.abandon_btn.set_sensitive(self.has_shelve_file()) else: self.shelve_btn.set_sensitive(False) self.unshelve_btn.set_sensitive(False) + self.abandon_btn.set_sensitive(False) def shelve_selected(self, files=[]): if len(self.filemodel) < 1: @@ -209,6 +214,19 @@ gdialog.Prompt(_('Unshelve Error'), _('Error: %s') % e, self).run() + def abandon(self): + try: + response = gdialog.Confirm(_('Confirm Delete'), [], self, + _('Delete the shelf contents?')).run() + if response == gtk.RESPONSE_YES: + self.ui.quiet = True + hgshelve.abandon(self.ui, self.repo) + self.ui.quiet = False + self.reload_status() + except Exception, e: + gdialog.Prompt(_('Abandon Error'), + _('Error: %s') % e, self).run() + def shelve_clicked(self, toolbutton, data=None): if not self.isuptodate(): return @@ -221,6 +239,12 @@ self.unshelve() self.activate_shelve_buttons(True) + def abandon_clicked(self, toolbutton, data=None): + if not self.isuptodate(): + return + self.abandon() + self.activate_shelve_buttons(True) + def run(_ui, *pats, **opts): cmdoptions = { 'user':opts.get('user', ''), 'date':opts.get('date', ''), diff --git a/tortoisehg/util/hgshelve.py b/tortoisehg/util/hgshelve.py --- a/tortoisehg/util/hgshelve.py +++ b/tortoisehg/util/hgshelve.py @@ -598,6 +598,20 @@ except IOError: ui.warn(_('nothing to unshelve\n')) + +def abandon(ui, repo): + '''abandon shelved changes''' + try: + if os.path.exists(repo.join('shelve')): + ui.debug(_('abandoning shelved file\n')) + os.unlink(repo.join('shelve')) + ui.status(_('shelved file abandoned\n')) + else: + ui.warn(_('nothing to abandon\n')) + except IOError: + ui.warn(_('abandon failed\n')) + + cmdtable = { "shelve": (shelve,
------------------------------------------------------------------------------
_______________________________________________ Tortoisehg-develop mailing list Tortoisehg-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop