~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/shelf_ui.py

  • Committer: John Arbash Meinel
  • Date: 2010-01-12 22:36:23 UTC
  • mfrom: (4953 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4955.
  • Revision ID: john@arbash-meinel.com-20100112223623-836x5mou0gm5vsep
merge bzr.dev 4953 to clean up the ui factory issues

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2008, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
458
458
        self.read_shelf = read_shelf
459
459
        self.show_diff = show_diff
460
460
        self.write_diff_to = write_diff_to
 
461
        if self.write_diff_to is None:
 
462
            self.write_diff_to = ui.ui_factory.make_output_stream()
461
463
 
462
464
    def run(self):
463
465
        """Perform the unshelving operation."""
471
473
                if unshelver.message is not None:
472
474
                    trace.note('Message: %s' % unshelver.message)
473
475
                change_reporter = delta._ChangeReporter()
474
 
                merger = unshelver.make_merger(None)
475
 
                merger.change_reporter = change_reporter
476
 
                if self.apply_changes:
477
 
                    merger.do_merge()
478
 
                elif self.show_diff:
479
 
                    self.write_diff(merger)
480
 
                else:
481
 
                    self.show_changes(merger)
 
476
                task = ui.ui_factory.nested_progress_bar()
 
477
                try:
 
478
                    merger = unshelver.make_merger(task)
 
479
                    merger.change_reporter = change_reporter
 
480
                    if self.apply_changes:
 
481
                        merger.do_merge()
 
482
                    elif self.show_diff:
 
483
                        self.write_diff(merger)
 
484
                    else:
 
485
                        self.show_changes(merger)
 
486
                finally:
 
487
                    task.finished()
482
488
            if self.delete_shelf:
483
489
                self.manager.delete_shelf(self.shelf_id)
484
490
                trace.note('Deleted changes with id "%d".' % self.shelf_id)
491
497
        tree_merger = merger.make_merger()
492
498
        tt = tree_merger.make_preview_transform()
493
499
        new_tree = tt.get_preview_tree()
494
 
        if self.write_diff_to is None:
495
 
            self.write_diff_to = ui.ui_factory.make_output_stream()
496
500
        diff.show_diff_trees(merger.this_tree, new_tree, self.write_diff_to)
497
501
        tt.finalize()
498
502