Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9, 0.9.1, and 0.9.1.1

history: further bundle preview improvements

* desensitize toolbar buttons to make preview mode more obvious
* truncate menus in preview mode
* insert 'apply' and 'reject' toolbar buttons in preview mode

Apply and Reject undo the preview mode changes and pull changes when applicable.

Changeset 5ca1ebd8b68a

Parent 54c3ca3273a2

by Steve Borho

Changes to one file · Browse files at 5ca1ebd8b68a Showing diff from parent 54c3ca3273a2 Diff from another changeset...

 
101
102
103
104
105
106
107
108
109
110
111
 
588
589
590
 
 
 
 
591
592
593
 
 
594
595
596
597
598
599
600
601
 
 
602
603
604
 
 
 
 
 
 
 
 
 
 
605
606
607
 
624
625
626
 
 
 
 
 
627
628
629
630
631
632
633
634
 
 
635
 
 
 
 
 
636
637
638
 
653
654
655
656
657
658
659
660
 
893
894
895
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
896
897
898
 
916
917
918
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
919
 
920
921
922
 
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
 
 
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
 
 
1501
1502
1503
1504
1505
 
1506
1507
1508
 
101
102
103
 
 
 
 
 
104
105
106
 
583
584
585
586
587
588
589
590
 
 
591
592
593
594
595
596
597
 
 
 
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
 
632
633
634
635
636
637
638
639
640
641
642
643
644
645
 
 
646
647
648
649
650
651
652
653
654
655
656
 
671
672
673
 
 
674
675
676
 
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
 
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
 
1543
1544
1545
 
 
 
 
 
 
 
 
 
 
 
 
1546
1547
1548
1549
1550
 
 
 
 
 
 
 
1551
1552
1553
1554
1555
1556
 
1557
1558
1559
1560
@@ -101,11 +101,6 @@
  self.filter = 'all'   self.filteropts = None   self.graphview.set_outgoing([]) - if self.bfile: - self.bfile = None - self.repo = hg.repository(self.ui, path=self.repo.root) - self.graphview.set_repo(self.repo, self.stbar) - self.changeview.repo = self.repo   self.origtip = len(self.repo)   self.reload_log()   def navigate(menuitem, revname): @@ -588,20 +583,33 @@
  m.append(create_menu(_('visualize change'), self.vdiff_change))   m.append(create_menu(_('di_splay change'), self.show_status))   m.append(create_menu(_('diff to local'), self.vdiff_local)) + if self.bfile: + m.show_all() + return m +   m.append(create_menu(_('_update'), self.checkout)) - self.cmenu_merge = create_menu(_('_merge with'), self.domerge) - m.append(self.cmenu_merge) + cmenu_merge = create_menu(_('_merge with'), self.domerge) + m.append(cmenu_merge)   m.append(create_menu(_('_copy hash'), self.copy_hash))   m.append(create_menu(_('_export patch'), self.export_patch))   m.append(create_menu(_('e_mail patch'), self.email_patch))   m.append(create_menu(_('_bundle rev:tip'), self.bundle_rev_to_tip))   m.append(create_menu(_('add/remove _tag'), self.add_tag)) - self.cmenu_backout = create_menu(_('backout revision'), - self.backout_rev) - m.append(self.cmenu_backout) + cmenu_backout = create_menu(_('backout revision'), self.backout_rev) + m.append(cmenu_backout)   m.append(create_menu(_('_revert'), self.revert))   m.append(create_menu(_('_archive'), self.archive))   + # disable/enable menus as required + parents = [x.rev() for x in self.repo.parents()] + can_merge = self.currevid not in parents and len(parents) < 2 + + op1, op2 = self.repo.dirstate.parents() + node = self.repo[self.currevid].node() + a = self.repo.changelog.ancestor(op1, node) + cmenu_backout.set_sensitive(a == node) + cmenu_merge.set_sensitive(can_merge) +   # need transplant extension for transplant command   if 'transplant' in self.exs:   m.append(create_menu(_('transp_lant to local'), @@ -624,15 +632,25 @@
  m.append(create_menu(_('_diff with selected'), self.diff_revs))   m.append(create_menu(_('visual diff with selected'),   self.vdiff_selected)) + if self.bfile: + m.connect_after('selection-done', self.restore_original_selection) + m.show_all() + return m +   m.append(create_menu(_('email from here to selected'),   self.email_revs))   m.append(create_menu(_('bundle from here to selected'),   self.bundle_revs))   m.append(create_menu(_('export patches from here to selected'),   self.export_revs)) - self.cmenu_merge2 = create_menu(_('_merge with'), self.domerge) - m.append(self.cmenu_merge2) + cmenu_merge = create_menu(_('_merge with'), self.domerge) + m.append(cmenu_merge)   + # disable/enable menus as required + parents = [x.rev() for x in self.repo.parents()] + can_merge = self.currevid in parents and len(parents) < 2 + cmenu_merge.set_sensitive(can_merge) +   # need transplant extension for transplant command   if 'transplant' in self.exs:   m.append(create_menu(_('transplant revision range to local'), @@ -653,8 +671,6 @@
    def get_body(self):   self.gorev_dialog = None - self._menu = self.tree_context_menu() - self._menu2 = self.tree_diff_context_menu()   self.stbar = gtklib.StatusBar()   self.limit = self.get_graphlimit(None)   @@ -893,6 +909,29 @@
  return self.stbar     def incoming_clicked(self, toolbutton, combo): + def apply_clicked(button, bfile): + cmdline = ['hg', 'pull', bfile] + dlg = hgcmd.CmdDialog(cmdline) + dlg.show_all() + dlg.run() + dlg.hide() + remove_overlay() + + def reject_clicked(button): + remove_overlay() + + def remove_overlay(): + self.bfile = None + combo.get_child().set_text('') + self.repo = hg.repository(self.ui, path=self.repo.root) + self.graphview.set_repo(self.repo, self.stbar) + self.changeview.repo = self.repo + self.reload_log() + self.toolbar.remove(self.toolbar.get_nth_item(0)) + self.toolbar.remove(self.toolbar.get_nth_item(0)) + for tb in disabled: + tb.set_sensitive(True) +   def cleanup():   try:   shutil.rmtree(self.bundledir) @@ -916,7 +955,35 @@
  dlg.hide()   if dlg.return_code() == 0 and os.path.isfile(bfile):   combo.get_child().set_text(bfile) + + # create apply/reject toolbar buttons + apply = gtk.ToolButton(gtk.STOCK_APPLY) + apply.set_tooltip(self.tooltips, + _('Accept incoming previewed changesets')) + apply.set_label(_('Accept')) + apply.show() + + reject = gtk.ToolButton(gtk.STOCK_DIALOG_ERROR) + reject.set_tooltip(self.tooltips, + _('Reject incoming previewed changesets')) + reject.set_label(_('Reject')) + reject.show() + + apply.connect('clicked', apply_clicked, bfile) + reject.connect('clicked', reject_clicked) + + self.toolbar.insert(reject, 0) + self.toolbar.insert(apply, 0) + + disabled = [] + for label in (_('Re_fresh'), _('Synchronize'), _('MQ')): + tb = self.get_toolbutton(label) + if tb: + tb.set_sensitive(False) + disabled.append(tb) +   self.bfile = bfile + self.origtip = len(self.repo)   self.repo = hg.repository(self.ui, path=bfile)   self.graphview.set_repo(self.repo, self.stbar)   self.changeview.repo = self.repo @@ -1476,33 +1543,18 @@
  return False     def tree_popup_menu(self, treeview, button=0, time=0) : - # disable/enable menus as required - parents = [x.rev() for x in self.repo.parents()] - can_merge = self.currevid not in parents and len(parents) < 2 - self.cmenu_merge.set_sensitive(can_merge) - - op1, op2 = self.repo.dirstate.parents() - node = self.repo[self.currevid].node() - a = self.repo.changelog.ancestor(op1, node) - self.cmenu_backout.set_sensitive(a == node) - - # display the context menu - self._menu.popup(None, None, None, button, time) + menu = self.tree_context_menu() + menu.popup(None, None, None, button, time)   return True     def tree_popup_menu_diff(self, treeview, button=0, time=0): - # disable/enable menus as required - parents = [x.rev() for x in self.repo.parents()] - can_merge = self.currevid in parents and len(parents) < 2 - self.cmenu_merge2.set_sensitive(can_merge) - - # display the context menu - self._menu2.popup(None, None, None, button, time) + menu = self.tree_diff_context_menu() + menu.popup(None, None, None, button, time)   return True     def tree_row_act(self, tree, path, column) :   'Default action is the first entry in the context menu' - self._menu.get_children()[0].activate() + self.tree_context_menu().get_children()[0].activate()   return True    def run(ui, *pats, **opts):