author | Steve Borho <steve@borho.org> |
Sat, 03 May 2008 11:19:11 -0500 | |
changeset 1153 | e677decc9814 |
parent 1147 | e2b03522d571 |
permissions | -rw-r--r-- |
196
e7081a06625c
hggtk: add dialog to browse revision history
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
1 |
# |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
2 |
# changeset.py - Changeset dialog for TortoiseHg |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
3 |
# |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
4 |
# Copyright 2008 Steve Borho <steve@borho.org> |
196
e7081a06625c
hggtk: add dialog to browse revision history
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
5 |
# |
e7081a06625c
hggtk: add dialog to browse revision history
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
6 |
|
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
7 |
import os |
580
e95e10b1f258
hggtk/history: add 'merge with' to context menu
Steve Borho <steve@borho.org>
parents:
576
diff
changeset
|
8 |
import subprocess |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
9 |
import sys |
611
3e58b74a16a9
hggtk/history: change date display format on treeview
TK Soh <teekaysoh@yahoo.com>
parents:
605
diff
changeset
|
10 |
import time |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
11 |
|
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
12 |
import pygtk |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
13 |
pygtk.require('2.0') |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
14 |
import gtk |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
15 |
import gobject |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
16 |
import pango |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
17 |
import StringIO |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
18 |
|
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
19 |
from mercurial.i18n import _ |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
20 |
from mercurial.node import * |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
21 |
from mercurial import cmdutil, util, ui, hg, commands |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
22 |
from mercurial import context, patch, revlog |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
23 |
from gdialog import * |
580
e95e10b1f258
hggtk/history: add 'merge with' to context menu
Steve Borho <steve@borho.org>
parents:
576
diff
changeset
|
24 |
from hgcmd import CmdDialog |
1135
05bdcfb888f5
hggtk/history: fix revision filtering on multi-byte filename
TK Soh <teekaysoh@yahoo.com>
parents:
1130
diff
changeset
|
25 |
from hglib import toutf, fromutf |
1147
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
26 |
from gtklib import StatusBar |
633
c1f4652dccc5
hggtk/vis: half-integration into history dialog
Steve Borho <steve@borho.org>
parents:
614
diff
changeset
|
27 |
|
611
3e58b74a16a9
hggtk/history: change date display format on treeview
TK Soh <teekaysoh@yahoo.com>
parents:
605
diff
changeset
|
28 |
|
798
0bf50e93e713
hggtk: rename GChange to ChangeSet
Steve Borho <steve@borho.org>
parents:
793
diff
changeset
|
29 |
class ChangeSet(GDialog): |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
30 |
"""GTK+ based dialog for displaying repository logs |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
31 |
""" |
1147
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
32 |
def __init__(self, ui, repo, cwd, pats, opts, main, stbar=None): |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
33 |
GDialog.__init__(self, ui, repo, cwd, pats, opts, main) |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
34 |
self.stbar = stbar |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
35 |
|
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
36 |
def get_title(self): |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
37 |
title = os.path.basename(self.repo.root) + ' changeset ' |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
38 |
title += self.opts['rev'][0] |
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
39 |
return title |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
40 |
|
466 | 41 |
def get_icon(self): |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
42 |
return 'menushowchanged.ico' |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
43 |
|
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
44 |
def get_tbbuttons(self): |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
45 |
self.parent_toggle = gtk.ToggleToolButton(gtk.STOCK_UNDO) |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
46 |
self.parent_toggle.set_use_underline(True) |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
47 |
self.parent_toggle.set_label('_other parent') |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
48 |
self.parent_toggle.set_tooltip(self.tooltips, 'diff other parent') |
791
15c081945e56
hggtk/history: cleaner integration of changeset viewer
Steve Borho <steve@borho.org>
parents:
779
diff
changeset
|
49 |
self.parent_toggle.set_sensitive(False) |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
50 |
self.parent_toggle.set_active(False) |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
51 |
self.parent_toggle.connect('toggled', self._parent_toggled) |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
52 |
return [self.parent_toggle] |
716
7d55eb5119d5
hggtk/history: make filter dialog modeless
TK Soh <teekaysoh@yahoo.com>
parents:
711
diff
changeset
|
53 |
|
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
54 |
def _parent_toggled(self, button): |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
55 |
self.load_details(self.currev) |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
56 |
|
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
57 |
def prepare_display(self): |
711
bde72382bd55
hggtk/history: add diff between arbitrary revisions
Steve Borho <steve@borho.org>
parents:
710
diff
changeset
|
58 |
self.currow = None |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
59 |
self.graphview = None |
779
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
60 |
self.glog_parent = None |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
61 |
node0, node1 = cmdutil.revpair(self.repo, self.opts.get('rev')) |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
62 |
self.load_details(self.repo.changelog.rev(node0)) |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
63 |
|
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
64 |
def save_settings(self): |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
65 |
settings = GDialog.save_settings(self) |
798
0bf50e93e713
hggtk: rename GChange to ChangeSet
Steve Borho <steve@borho.org>
parents:
793
diff
changeset
|
66 |
settings['changeset'] = self._hpaned.get_position() |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
67 |
return settings |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
68 |
|
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
69 |
def load_settings(self, settings): |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
70 |
GDialog.load_settings(self, settings) |
798
0bf50e93e713
hggtk: rename GChange to ChangeSet
Steve Borho <steve@borho.org>
parents:
793
diff
changeset
|
71 |
if settings and 'changeset' in settings: |
0bf50e93e713
hggtk: rename GChange to ChangeSet
Steve Borho <steve@borho.org>
parents:
793
diff
changeset
|
72 |
self._setting_hpos = settings['changeset'] |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
73 |
else: |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
74 |
self._setting_hpos = -1 |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
75 |
|
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
76 |
def load_details(self, rev): |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
77 |
'''Load selected changeset details into buffer and filelist''' |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
78 |
self.currev = rev |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
79 |
self._buffer.set_text('') |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
80 |
self._filelist.clear() |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
81 |
|
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
82 |
parents = [x for x in self.repo.changelog.parentrevs(rev) \ |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
83 |
if x != nullrev] |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
84 |
self.parents = parents |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
85 |
title = self.get_title() |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
86 |
if len(parents) == 2: |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
87 |
self.parent_toggle.set_sensitive(True) |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
88 |
if self.parent_toggle.get_active(): |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
89 |
title += ':' + str(self.parents[1]) |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
90 |
else: |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
91 |
title += ':' + str(self.parents[0]) |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
92 |
else: |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
93 |
self.parent_toggle.set_sensitive(False) |
792
3f959d50248f
hggtk/changeset: prevent duplicate file diffs
Steve Borho <steve@borho.org>
parents:
791
diff
changeset
|
94 |
if self.parent_toggle.get_active(): |
3f959d50248f
hggtk/changeset: prevent duplicate file diffs
Steve Borho <steve@borho.org>
parents:
791
diff
changeset
|
95 |
# Parent button must be pushed out, but this |
3f959d50248f
hggtk/changeset: prevent duplicate file diffs
Steve Borho <steve@borho.org>
parents:
791
diff
changeset
|
96 |
# will cause load_details to be called again |
3f959d50248f
hggtk/changeset: prevent duplicate file diffs
Steve Borho <steve@borho.org>
parents:
791
diff
changeset
|
97 |
# so we exit out to prevent recursion. |
3f959d50248f
hggtk/changeset: prevent duplicate file diffs
Steve Borho <steve@borho.org>
parents:
791
diff
changeset
|
98 |
self.parent_toggle.set_active(False) |
3f959d50248f
hggtk/changeset: prevent duplicate file diffs
Steve Borho <steve@borho.org>
parents:
791
diff
changeset
|
99 |
return |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
100 |
|
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
101 |
ctx = self.repo.changectx(rev) |
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
102 |
if not ctx: |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
103 |
self._last_rev = None |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
104 |
return False |
793
2544994c083b
hggtk/changeset: minor cleanups
Steve Borho <steve@borho.org>
parents:
792
diff
changeset
|
105 |
self.set_title(title) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
106 |
self.textview.freeze_child_notify() |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
107 |
try: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
108 |
self._fill_buffer(self._buffer, rev, ctx, self._filelist) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
109 |
finally: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
110 |
self.textview.thaw_child_notify() |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
111 |
|
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
112 |
def _fill_buffer(self, buf, rev, ctx, filelist): |
1147
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
113 |
self.stbar.begin('Retrieving changeset data...') |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
114 |
|
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
115 |
def title_line(title, text, tag): |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
116 |
pad = ' ' * (12 - len(title)) |
1130
8a56ab916e0a
hggtk: generic fix on encoding issues
TK Soh <teekaysoh@yahoo.com>
parents:
1127
diff
changeset
|
117 |
utext = toutf(title + pad + text) |
1127
5a9bcfad23c9
hggtk/history: fix UTF encoding error in committer field
TK Soh <teekaysoh@yahoo.com>
parents:
1118
diff
changeset
|
118 |
buf.insert_with_tags_by_name(eob, utext, tag) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
119 |
buf.insert(eob, "\n") |
748
0c288f0e8ca1
hggtk/history: borrow color scheme from gstatus
Steve Borho <steve@borho.org>
parents:
747
diff
changeset
|
120 |
|
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
121 |
# TODO: Add toggle for gmtime/localtime |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
122 |
eob = buf.get_end_iter() |
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
123 |
date = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(ctx.date()[0])) |
1153
e677decc9814
changeset: copy hash to clipboard is now optional, default: False
Steve Borho <steve@borho.org>
parents:
1147
diff
changeset
|
124 |
if self.clipboard: |
e677decc9814
changeset: copy hash to clipboard is now optional, default: False
Steve Borho <steve@borho.org>
parents:
1147
diff
changeset
|
125 |
self.clipboard.set_text(short(ctx.node())) |
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
126 |
change = str(rev) + ':' + short(ctx.node()) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
127 |
tags = ' '.join(ctx.tags()) |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
128 |
parents = self.parents |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
129 |
|
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
130 |
title_line('changeset:', change, 'changeset') |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
131 |
if ctx.branch() != 'default': |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
132 |
title_line('branch:', ctx.branch(), 'greybg') |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
133 |
title_line('user/date:', ctx.user() + '\t' + date, 'changeset') |
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
134 |
for p in parents: |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
135 |
pctx = self.repo.changectx(p) |
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
136 |
summary = pctx.description().splitlines()[0] |
1130
8a56ab916e0a
hggtk: generic fix on encoding issues
TK Soh <teekaysoh@yahoo.com>
parents:
1127
diff
changeset
|
137 |
summary = toutf(summary) |
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
138 |
change = str(p) + ':' + short(self.repo.changelog.node(p)) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
139 |
title = 'parent:' |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
140 |
title += ' ' * (12 - len(title)) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
141 |
buf.insert_with_tags_by_name(eob, title, 'parent') |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
142 |
buf.insert_with_tags_by_name(eob, change, 'link') |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
143 |
buf.insert_with_tags_by_name(eob, ' ' + summary, 'parent') |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
144 |
buf.insert(eob, "\n") |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
145 |
for n in self.repo.changelog.children(ctx.node()): |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
146 |
cctx = self.repo.changectx(n) |
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
147 |
summary = cctx.description().splitlines()[0] |
1130
8a56ab916e0a
hggtk: generic fix on encoding issues
TK Soh <teekaysoh@yahoo.com>
parents:
1127
diff
changeset
|
148 |
summary = toutf(summary) |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
149 |
childrev = self.repo.changelog.rev(n) |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
150 |
change = str(childrev) + ':' + short(n) |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
151 |
title = 'child:' |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
152 |
title += ' ' * (12 - len(title)) |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
153 |
buf.insert_with_tags_by_name(eob, title, 'parent') |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
154 |
buf.insert_with_tags_by_name(eob, change, 'link') |
934
79b7126661a9
hggtk/changeset: optimize changeset header
Steve Borho <steve@borho.org>
parents:
899
diff
changeset
|
155 |
buf.insert_with_tags_by_name(eob, ' ' + summary, 'parent') |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
156 |
buf.insert(eob, "\n") |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
157 |
for n in self.repo.changelog.children(ctx.node()): |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
158 |
childrev = self.repo.changelog.rev(n) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
159 |
if tags: title_line('tags:', tags, 'tag') |
760
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
160 |
|
1130
8a56ab916e0a
hggtk: generic fix on encoding issues
TK Soh <teekaysoh@yahoo.com>
parents:
1127
diff
changeset
|
161 |
log = toutf(ctx.description()) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
162 |
buf.insert(eob, '\n' + log + '\n\n') |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
163 |
|
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
164 |
if self.parent_toggle.get_active(): |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
165 |
parent = self.repo.changelog.node(parents[1]) |
897
7e4373fc0778
hggtk/changeset: fix display of revision 0
Steve Borho <steve@borho.org>
parents:
847
diff
changeset
|
166 |
elif parents: |
7e4373fc0778
hggtk/changeset: fix display of revision 0
Steve Borho <steve@borho.org>
parents:
847
diff
changeset
|
167 |
parent = self.repo.changelog.node(parents[0]) |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
168 |
else: |
897
7e4373fc0778
hggtk/changeset: fix display of revision 0
Steve Borho <steve@borho.org>
parents:
847
diff
changeset
|
169 |
parent = nullid |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
170 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
171 |
buf.create_mark('begmark', buf.get_start_iter()) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
172 |
filelist.append(('*', '[Description]', 'begmark', False, ())) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
173 |
pctx = self.repo.changectx(parent) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
174 |
|
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
175 |
nodes = parent, ctx.node() |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
176 |
iterator = self.diff_generator(*nodes) |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
177 |
gobject.idle_add(self.get_diffs, iterator, nodes, pctx, buf, filelist) |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
178 |
self.curnodes = nodes |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
179 |
|
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
180 |
def get_diffs(self, iterator, nodes, pctx, buf, filelist): |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
181 |
if self.curnodes != nodes: |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
182 |
return False |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
183 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
184 |
try: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
185 |
status, file, txt = iterator.next() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
186 |
except StopIteration: |
1147
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
187 |
self.stbar.end() |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
188 |
return False |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
189 |
|
1130
8a56ab916e0a
hggtk: generic fix on encoding issues
TK Soh <teekaysoh@yahoo.com>
parents:
1127
diff
changeset
|
190 |
lines = txt.splitlines() |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
191 |
eob = buf.get_end_iter() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
192 |
offset = eob.get_offset() |
1020
520486340ac5
hggtk/changeset: handle filenames with spaces
Steve Borho <steve@borho.org>
parents:
1001
diff
changeset
|
193 |
fileoffs, tags, lines, statmax = self.prepare_diff(lines, offset, file) |
820
737c58ecc790
hggtk/changeset: partial fix for UTF-8 encoding errors
Steve Borho <steve@borho.org>
parents:
806
diff
changeset
|
194 |
for l in lines: |
1136
611be9228485
hggtk/history: fix diff hilite error on multi-byte charsets
TK Soh <teekaysoh@yahoo.com>
parents:
1135
diff
changeset
|
195 |
buf.insert(eob, l) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
196 |
|
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
197 |
# inserts the tags |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
198 |
for name, p0, p1 in tags: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
199 |
i0 = buf.get_iter_at_offset(p0) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
200 |
i1 = buf.get_iter_at_offset(p1) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
201 |
txt = buf.get_text(i0, i1) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
202 |
buf.apply_tag_by_name(name, i0, i1) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
203 |
|
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
204 |
# inserts the marks |
1020
520486340ac5
hggtk/changeset: handle filenames with spaces
Steve Borho <steve@borho.org>
parents:
1001
diff
changeset
|
205 |
for mark, offset, stats in fileoffs: |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
206 |
pos = buf.get_iter_at_offset(offset) |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
207 |
mark = 'mark_%d' % offset |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
208 |
buf.create_mark(mark, pos) |
1130
8a56ab916e0a
hggtk: generic fix on encoding issues
TK Soh <teekaysoh@yahoo.com>
parents:
1127
diff
changeset
|
209 |
filelist.append((status, toutf(file), mark, True, stats)) |
1001
0e7781407c14
hggtk/changeset: set mono tag on changeset text iteratively
Steve Borho <steve@borho.org>
parents:
994
diff
changeset
|
210 |
sob, eob = buf.get_bounds() |
0e7781407c14
hggtk/changeset: set mono tag on changeset text iteratively
Steve Borho <steve@borho.org>
parents:
994
diff
changeset
|
211 |
buf.apply_tag_by_name("mono", pos, eob) |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
212 |
return True |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
213 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
214 |
# Hacked up version of mercurial.patch.diff() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
215 |
# Use git mode by default (to show copies, renames, permissions) but |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
216 |
# never show binary diffs. It operates as a generator, so it can be |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
217 |
# called iteratively to get file diffs from a changeset |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
218 |
def diff_generator(self, node1, node2): |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
219 |
repo = self.repo |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
220 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
221 |
ccache = {} |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
222 |
def getctx(r): |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
223 |
if r not in ccache: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
224 |
ccache[r] = context.changectx(repo, r) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
225 |
return ccache[r] |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
226 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
227 |
flcache = {} |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
228 |
def getfilectx(f, ctx): |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
229 |
flctx = ctx.filectx(f, filelog=flcache.get(f)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
230 |
if f not in flcache: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
231 |
flcache[f] = flctx._filelog |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
232 |
return flctx |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
233 |
|
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
234 |
ctx1 = context.changectx(repo, node1) # parent |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
235 |
ctx2 = context.changectx(repo, node2) # current |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
236 |
|
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
237 |
if node1 == repo.changelog.parents(node2)[0]: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
238 |
filelist = ctx2.files() |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
239 |
else: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
240 |
changes = repo.status(node1, node2, None)[:5] |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
241 |
modified, added, removed, deleted, unknown = changes |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
242 |
filelist = modified + added + removed |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
243 |
|
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
244 |
|
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
245 |
# force manifest reading |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
246 |
man1 = ctx1.manifest() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
247 |
date1 = util.datestr(ctx1.date()) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
248 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
249 |
execf2 = ctx2.manifest().execf |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
250 |
linkf2 = ctx2.manifest().linkf |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
251 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
252 |
# returns False if there was no rename between ctx1 and ctx2 |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
253 |
# returns None if the file was created between ctx1 and ctx2 |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
254 |
# returns the (file, node) present in ctx1 that was renamed to f in ctx2 |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
255 |
# This will only really work if c1 is the Nth 1st parent of c2. |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
256 |
def renamed(c1, c2, man, f): |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
257 |
startrev = c1.rev() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
258 |
c = c2 |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
259 |
crev = c.rev() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
260 |
if crev is None: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
261 |
crev = repo.changelog.count() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
262 |
orig = f |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
263 |
files = (f,) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
264 |
while crev > startrev: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
265 |
if f in files: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
266 |
try: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
267 |
src = getfilectx(f, c).renamed() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
268 |
except revlog.LookupError: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
269 |
return None |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
270 |
if src: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
271 |
f = src[0] |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
272 |
crev = c.parents()[0].rev() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
273 |
# try to reuse |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
274 |
c = getctx(crev) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
275 |
files = c.files() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
276 |
if f not in man: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
277 |
return None |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
278 |
if f == orig: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
279 |
return False |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
280 |
return f |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
281 |
|
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
282 |
status = {} |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
283 |
def filestatus(f): |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
284 |
if f in status: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
285 |
return status[f] |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
286 |
try: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
287 |
# Determine file status by presence in manifests |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
288 |
s = 'R' |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
289 |
ctx2.filectx(f) |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
290 |
s = 'A' |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
291 |
ctx1.filectx(f) |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
292 |
s = 'M' |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
293 |
except revlog.LookupError: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
294 |
pass |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
295 |
status[f] = s |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
296 |
return s |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
297 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
298 |
copied = {} |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
299 |
for f in filelist: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
300 |
src = renamed(ctx1, ctx2, man1, f) |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
301 |
if src: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
302 |
copied[f] = src |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
303 |
|
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
304 |
srcs = [x[1] for x in copied.iteritems() if filestatus(x[0]) == 'A'] |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
305 |
|
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
306 |
gone = {} |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
307 |
for f in filelist: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
308 |
s = filestatus(f) |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
309 |
to = None |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
310 |
tn = None |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
311 |
dodiff = True |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
312 |
header = [] |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
313 |
if f in man1: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
314 |
to = getfilectx(f, ctx1).data() |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
315 |
if s != 'R': |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
316 |
tn = getfilectx(f, ctx2).data() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
317 |
a, b = f, f |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
318 |
def gitmode(x, l): |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
319 |
return l and '120000' or (x and '100755' or '100644') |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
320 |
def addmodehdr(header, omode, nmode): |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
321 |
if omode != nmode: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
322 |
header.append('old mode %s\n' % omode) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
323 |
header.append('new mode %s\n' % nmode) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
324 |
|
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
325 |
if s == 'A': |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
326 |
mode = gitmode(execf2(f), linkf2(f)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
327 |
if f in copied: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
328 |
a = copied[f] |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
329 |
omode = gitmode(man1.execf(a), man1.linkf(a)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
330 |
addmodehdr(header, omode, mode) |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
331 |
if filestatus(a) == 'R' and a not in gone: |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
332 |
op = 'rename' |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
333 |
gone[a] = 1 |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
334 |
else: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
335 |
op = 'copy' |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
336 |
header.append('%s from %s\n' % (op, a)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
337 |
header.append('%s to %s\n' % (op, f)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
338 |
to = getfilectx(a, ctx1).data() |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
339 |
else: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
340 |
header.append('new file mode %s\n' % mode) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
341 |
if util.binary(tn): |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
342 |
dodiff = 'binary' |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
343 |
elif s == 'R': |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
344 |
if f in srcs: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
345 |
dodiff = False |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
346 |
else: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
347 |
mode = gitmode(man1.execf(f), man1.linkf(f)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
348 |
header.append('deleted file mode %s\n' % mode) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
349 |
else: |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
350 |
omode = gitmode(man1.execf(f), man1.linkf(f)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
351 |
nmode = gitmode(execf2(f), linkf2(f)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
352 |
addmodehdr(header, omode, nmode) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
353 |
if util.binary(to) or util.binary(tn): |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
354 |
dodiff = 'binary' |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
355 |
header.insert(0, 'diff --git a/%s b/%s\n' % (a, b)) |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
356 |
if dodiff == 'binary': |
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
357 |
text = 'binary file has changed.\n' |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
358 |
elif dodiff: |
1024
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
359 |
try: |
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
360 |
text = patch.mdiff.unidiff(to, date1, |
992
96ccf03e3cfc
hggtk/changeset: move patch generation to idle thread
Steve Borho <steve@borho.org>
parents:
991
diff
changeset
|
361 |
tn, util.datestr(ctx2.date()), |
1024
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
362 |
fn1=a, fn2=b, r=None, |
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
363 |
opts=patch.mdiff.defaultopts) |
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
364 |
except TypeError: |
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
365 |
# hg-0.9.5 and before |
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
366 |
text = patch.mdiff.unidiff(to, date1, |
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
367 |
tn, util.datestr(ctx2.date()), |
47adc84be374
hggtk/changeset: hg-version safe mdiff.unidiff() call
Steve Borho <steve@borho.org>
parents:
1022
diff
changeset
|
368 |
f, None, opts=patch.mdiff.defaultopts) |
994
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
369 |
else: |
7bddfece0ddd
hggtk/changeset: avoid repo.status() call when comparing first parent
Steve Borho <steve@borho.org>
parents:
993
diff
changeset
|
370 |
text = '' |
993
f0463f55ac10
hggtk/changeset: skip changeset files with no changes
Steve Borho <steve@borho.org>
parents:
992
diff
changeset
|
371 |
if header or text: yield (s, f, ''.join(header) + text) |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
372 |
|
1020
520486340ac5
hggtk/changeset: handle filenames with spaces
Steve Borho <steve@borho.org>
parents:
1001
diff
changeset
|
373 |
def prepare_diff(self, difflines, offset, fname): |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
374 |
'''Borrowed from hgview; parses changeset diffs''' |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
375 |
DIFFHDR = "=== %s ===\n" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
376 |
idx = 0 |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
377 |
outlines = [] |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
378 |
tags = [] |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
379 |
filespos = [] |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
380 |
def addtag( name, offset, length ): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
381 |
if tags and tags[-1][0] == name and tags[-1][2]==offset: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
382 |
tags[-1][2] += length |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
383 |
else: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
384 |
tags.append( [name, offset, offset+length] ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
385 |
stats = [0,0] |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
386 |
statmax = 0 |
1136
611be9228485
hggtk/history: fix diff hilite error on multi-byte charsets
TK Soh <teekaysoh@yahoo.com>
parents:
1135
diff
changeset
|
387 |
for i,l1 in enumerate(difflines): |
611be9228485
hggtk/history: fix diff hilite error on multi-byte charsets
TK Soh <teekaysoh@yahoo.com>
parents:
1135
diff
changeset
|
388 |
l = toutf(l1) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
389 |
if l.startswith("diff"): |
1136
611be9228485
hggtk/history: fix diff hilite error on multi-byte charsets
TK Soh <teekaysoh@yahoo.com>
parents:
1135
diff
changeset
|
390 |
txt = toutf(DIFFHDR % fname) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
391 |
addtag( "greybg", offset, len(txt) ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
392 |
outlines.append(txt) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
393 |
markname = "file%d" % idx |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
394 |
idx += 1 |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
395 |
statmax = max( statmax, stats[0]+stats[1] ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
396 |
stats = [0,0] |
1020
520486340ac5
hggtk/changeset: handle filenames with spaces
Steve Borho <steve@borho.org>
parents:
1001
diff
changeset
|
397 |
filespos.append(( markname, offset, stats )) |
1136
611be9228485
hggtk/history: fix diff hilite error on multi-byte charsets
TK Soh <teekaysoh@yahoo.com>
parents:
1135
diff
changeset
|
398 |
offset += len(txt.decode('utf-8')) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
399 |
continue |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
400 |
elif l.startswith("+++"): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
401 |
continue |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
402 |
elif l.startswith("---"): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
403 |
continue |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
404 |
elif l.startswith("+"): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
405 |
tag = "green" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
406 |
stats[0] += 1 |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
407 |
elif l.startswith("-"): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
408 |
stats[1] += 1 |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
409 |
tag = "red" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
410 |
elif l.startswith("@@"): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
411 |
tag = "blue" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
412 |
else: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
413 |
tag = "black" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
414 |
l = l+"\n" |
1136
611be9228485
hggtk/history: fix diff hilite error on multi-byte charsets
TK Soh <teekaysoh@yahoo.com>
parents:
1135
diff
changeset
|
415 |
length = len(l.decode('utf-8')) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
416 |
addtag( tag, offset, length ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
417 |
outlines.append( l ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
418 |
offset += length |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
419 |
statmax = max( statmax, stats[0]+stats[1] ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
420 |
return filespos, tags, outlines, statmax |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
421 |
|
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
422 |
def link_event(self, tag, widget, event, iter): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
423 |
if event.type != gtk.gdk.BUTTON_RELEASE: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
424 |
return |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
425 |
text = self.get_link_text(tag, widget, iter) |
604
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
426 |
if not text: |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
427 |
return |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
428 |
linkrev = long(text.split(':')[0]) |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
429 |
if self.graphview: |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
430 |
self.graphview.set_revision_id(linkrev) |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
431 |
self.graphview.scroll_to_revision(linkrev) |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
432 |
else: |
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
433 |
self.load_details(linkrev) |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
434 |
|
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
435 |
def get_link_text(self, tag, widget, iter): |
604
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
436 |
"""handle clicking on a link in a textview""" |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
437 |
text_buffer = widget.get_buffer() |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
438 |
beg = iter.copy() |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
439 |
while not beg.begins_tag(tag): |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
440 |
beg.backward_char() |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
441 |
end = iter.copy() |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
442 |
while not end.ends_tag(tag): |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
443 |
end.forward_char() |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
444 |
text = text_buffer.get_text(beg, end) |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
445 |
return text |
66f0d8592edb
hggtk/history: show parent revisions as links in detail window
TK Soh <teekaysoh@yahoo.com>
parents:
603
diff
changeset
|
446 |
|
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
447 |
def file_context_menu(self): |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
448 |
def create_menu(label, callback): |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
449 |
menuitem = gtk.MenuItem(label, True) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
450 |
menuitem.connect('activate', callback) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
451 |
menuitem.set_border_width(1) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
452 |
return menuitem |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
453 |
|
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
454 |
_menu = gtk.Menu() |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
455 |
_menu.append(create_menu('_view at revision', self._view_file_rev)) |
966
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
456 |
self._save_menu = create_menu('_save at revision', self._save_file_rev) |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
457 |
_menu.append(self._save_menu) |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
458 |
_menu.append(create_menu('_file history', self._file_history)) |
899
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
459 |
self._ann_menu = create_menu('_annotate file', self._ann_file) |
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
460 |
_menu.append(self._ann_menu) |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
461 |
_menu.append(create_menu('_revert file contents', self._revert_file)) |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
462 |
self._file_diff_to_mark_menu = create_menu('_diff file to mark', |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
463 |
self._diff_file_to_mark) |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
464 |
self._file_diff_from_mark_menu = create_menu('diff file _from mark', |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
465 |
self._diff_file_from_mark) |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
466 |
_menu.append(self._file_diff_to_mark_menu) |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
467 |
_menu.append(self._file_diff_from_mark_menu) |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
468 |
_menu.show_all() |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
469 |
return _menu |
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
470 |
|
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
471 |
def get_body(self): |
1153
e677decc9814
changeset: copy hash to clipboard is now optional, default: False
Steve Borho <steve@borho.org>
parents:
1147
diff
changeset
|
472 |
if self.repo.ui.configbool('tortoisehg', 'copyhash'): |
e677decc9814
changeset: copy hash to clipboard is now optional, default: False
Steve Borho <steve@borho.org>
parents:
1147
diff
changeset
|
473 |
sel = (os.name == 'nt') and 'CLIPBOARD' or 'PRIMARY' |
e677decc9814
changeset: copy hash to clipboard is now optional, default: False
Steve Borho <steve@borho.org>
parents:
1147
diff
changeset
|
474 |
self.clipboard = gtk.Clipboard(selection=sel) |
e677decc9814
changeset: copy hash to clipboard is now optional, default: False
Steve Borho <steve@borho.org>
parents:
1147
diff
changeset
|
475 |
else: |
e677decc9814
changeset: copy hash to clipboard is now optional, default: False
Steve Borho <steve@borho.org>
parents:
1147
diff
changeset
|
476 |
self.clipboard = None |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
477 |
self._filemenu = self.file_context_menu() |
690
011c611a1244
hggtk/history: major refactor, unify treeview
Steve Borho <steve@borho.org>
parents:
688
diff
changeset
|
478 |
|
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
479 |
details_frame = gtk.Frame() |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
480 |
details_frame.set_shadow_type(gtk.SHADOW_ETCHED_IN) |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
481 |
scroller = gtk.ScrolledWindow() |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
482 |
scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
483 |
details_frame.add(scroller) |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
484 |
|
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
485 |
details_text = gtk.TextView() |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
486 |
details_text.set_wrap_mode(gtk.WRAP_NONE) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
487 |
details_text.set_editable(False) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
488 |
details_text.modify_font(pango.FontDescription(self.fontcomment)) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
489 |
scroller.add(details_text) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
490 |
|
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
491 |
self._buffer = gtk.TextBuffer() |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
492 |
self.setup_tags() |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
493 |
details_text.set_buffer(self._buffer) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
494 |
self.textview = details_text |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
495 |
|
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
496 |
filelist_tree = gtk.TreeView() |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
497 |
filesel = filelist_tree.get_selection() |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
498 |
filesel.connect("changed", self._filelist_rowchanged) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
499 |
filelist_tree.connect('button-release-event', |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
500 |
self._file_button_release) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
501 |
filelist_tree.connect('popup-menu', self._file_popup_menu) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
502 |
filelist_tree.connect('row-activated', self._file_row_act) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
503 |
|
990
bb03d0657a4c
hggtk/changeset: show MAR status in separate column
Steve Borho <steve@borho.org>
parents:
988
diff
changeset
|
504 |
self._filelist = gtk.ListStore( |
bb03d0657a4c
hggtk/changeset: show MAR status in separate column
Steve Borho <steve@borho.org>
parents:
988
diff
changeset
|
505 |
gobject.TYPE_STRING, # MAR status |
1135
05bdcfb888f5
hggtk/history: fix revision filtering on multi-byte filename
TK Soh <teekaysoh@yahoo.com>
parents:
1130
diff
changeset
|
506 |
gobject.TYPE_STRING, # filename (utf-8 encoded) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
507 |
gobject.TYPE_PYOBJECT, # mark |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
508 |
gobject.TYPE_PYOBJECT, # give cmenu |
1135
05bdcfb888f5
hggtk/history: fix revision filtering on multi-byte filename
TK Soh <teekaysoh@yahoo.com>
parents:
1130
diff
changeset
|
509 |
gobject.TYPE_PYOBJECT, # diffstats |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
510 |
) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
511 |
filelist_tree.set_model(self._filelist) |
990
bb03d0657a4c
hggtk/changeset: show MAR status in separate column
Steve Borho <steve@borho.org>
parents:
988
diff
changeset
|
512 |
column = gtk.TreeViewColumn('Stat', gtk.CellRendererText(), text=0) |
bb03d0657a4c
hggtk/changeset: show MAR status in separate column
Steve Borho <steve@borho.org>
parents:
988
diff
changeset
|
513 |
filelist_tree.append_column(column) |
bb03d0657a4c
hggtk/changeset: show MAR status in separate column
Steve Borho <steve@borho.org>
parents:
988
diff
changeset
|
514 |
column = gtk.TreeViewColumn('Files', gtk.CellRendererText(), text=1) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
515 |
filelist_tree.append_column(column) |
802
2491482d48ee
hggtk/changeset: add etched frame around file list
Steve Borho <steve@borho.org>
parents:
799
diff
changeset
|
516 |
|
2491482d48ee
hggtk/changeset: add etched frame around file list
Steve Borho <steve@borho.org>
parents:
799
diff
changeset
|
517 |
list_frame = gtk.Frame() |
2491482d48ee
hggtk/changeset: add etched frame around file list
Steve Borho <steve@borho.org>
parents:
799
diff
changeset
|
518 |
list_frame.set_shadow_type(gtk.SHADOW_ETCHED_IN) |
2491482d48ee
hggtk/changeset: add etched frame around file list
Steve Borho <steve@borho.org>
parents:
799
diff
changeset
|
519 |
scroller = gtk.ScrolledWindow() |
2491482d48ee
hggtk/changeset: add etched frame around file list
Steve Borho <steve@borho.org>
parents:
799
diff
changeset
|
520 |
scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) |
2491482d48ee
hggtk/changeset: add etched frame around file list
Steve Borho <steve@borho.org>
parents:
799
diff
changeset
|
521 |
scroller.add(filelist_tree) |
2491482d48ee
hggtk/changeset: add etched frame around file list
Steve Borho <steve@borho.org>
parents:
799
diff
changeset
|
522 |
list_frame.add(scroller) |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
523 |
|
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
524 |
self._hpaned = gtk.HPaned() |
988
561be038f12f
hggtk/changeset: move file list to left side
Steve Borho <steve@borho.org>
parents:
985
diff
changeset
|
525 |
self._hpaned.pack1(list_frame, True, True) |
561be038f12f
hggtk/changeset: move file list to left side
Steve Borho <steve@borho.org>
parents:
985
diff
changeset
|
526 |
self._hpaned.pack2(details_frame, True, True) |
747
2d31a774e473
hgtk/history: add deltas to detail window
Steve Borho <steve@borho.org>
parents:
745
diff
changeset
|
527 |
self._hpaned.set_position(self._setting_hpos) |
1147
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
528 |
|
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
529 |
if self.stbar: |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
530 |
# embedded by changelog browser |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
531 |
return self._hpaned |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
532 |
else: |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
533 |
# add status bar for main app |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
534 |
vbox = gtk.VBox() |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
535 |
vbox.pack_start(self._hpaned, True, True) |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
536 |
self.stbar = StatusBar() |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
537 |
self.stbar.show() |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
538 |
vbox.pack_start(gtk.HSeparator(), False, False) |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
539 |
vbox.pack_start(self.stbar, False, False) |
e2b03522d571
hggtk/history: show progress bar when populating diff chunks
TK Soh <teekaysoh@yahoo.com>
parents:
1136
diff
changeset
|
540 |
return vbox |
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
541 |
|
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
542 |
def setup_tags(self): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
543 |
"""Creates the tags to be used inside the TextView""" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
544 |
def make_texttag( name, **kwargs ): |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
545 |
"""Helper function generating a TextTag""" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
546 |
tag = gtk.TextTag(name) |
806
f0278682fadf
hggtk: use iteritems() when possible
Steve Borho <steve@borho.org>
parents:
802
diff
changeset
|
547 |
for key, value in kwargs.iteritems(): |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
548 |
key = key.replace("_","-") |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
549 |
try: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
550 |
tag.set_property( key, value ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
551 |
except TypeError: |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
552 |
print "Warning the property %s is unsupported in" % key |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
553 |
print "this version of pygtk" |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
554 |
return tag |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
555 |
|
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
556 |
tag_table = self._buffer.get_tag_table() |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
557 |
|
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
558 |
tag_table.add( make_texttag('changeset', foreground='#000090', |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
559 |
paragraph_background='#F0F0F0')) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
560 |
tag_table.add(make_texttag('date', foreground='#000090', |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
561 |
paragraph_background='#F0F0F0')) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
562 |
tag_table.add(make_texttag('tag', foreground='#000090', |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
563 |
paragraph_background='#F0F0F0')) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
564 |
tag_table.add(make_texttag('files', foreground='#5C5C5C', |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
565 |
paragraph_background='#F0F0F0')) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
566 |
tag_table.add(make_texttag('parent', foreground='#000090', |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
567 |
paragraph_background='#F0F0F0')) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
568 |
|
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
569 |
tag_table.add( make_texttag( "mono", family="Monospace" )) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
570 |
tag_table.add( make_texttag( "blue", foreground='blue' )) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
571 |
tag_table.add( make_texttag( "red", foreground='red' )) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
572 |
tag_table.add( make_texttag( "green", foreground='darkgreen' )) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
573 |
tag_table.add( make_texttag( "black", foreground='black' )) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
574 |
tag_table.add( make_texttag( "greybg", |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
575 |
paragraph_background='grey', |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
576 |
weight=pango.WEIGHT_BOLD )) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
577 |
tag_table.add( make_texttag( "yellowbg", background='yellow' )) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
578 |
link_tag = make_texttag( "link", foreground="blue", |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
579 |
underline=pango.UNDERLINE_SINGLE ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
580 |
link_tag.connect("event", self.link_event ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
581 |
tag_table.add( link_tag ) |
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
582 |
|
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
583 |
def _filelist_rowchanged(self, sel): |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
584 |
model, iter = sel.get_selected() |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
585 |
if not iter: |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
586 |
return |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
587 |
# scroll to file in details window |
991
e04bc9342dae
hggtk/changeset: fix jump-to-mark after last change
Steve Borho <steve@borho.org>
parents:
990
diff
changeset
|
588 |
mark = self._buffer.get_mark(model[iter][2]) |
761
5551cc284a35
hggtk/history: performance improvements
Steve Borho <steve@borho.org>
parents:
760
diff
changeset
|
589 |
self.textview.scroll_to_mark(mark, 0.0, True, 0.0, 0.0) |
991
e04bc9342dae
hggtk/changeset: fix jump-to-mark after last change
Steve Borho <steve@borho.org>
parents:
990
diff
changeset
|
590 |
if model[iter][3]: |
1135
05bdcfb888f5
hggtk/history: fix revision filtering on multi-byte filename
TK Soh <teekaysoh@yahoo.com>
parents:
1130
diff
changeset
|
591 |
self.curfile = fromutf(model[iter][1]) |
760
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
592 |
else: |
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
593 |
self.curfile = None |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
594 |
|
762
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
595 |
def _file_button_release(self, widget, event): |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
596 |
if event.button == 3 and not (event.state & (gtk.gdk.SHIFT_MASK | |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
597 |
gtk.gdk.CONTROL_MASK)): |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
598 |
self._file_popup_menu(widget, event.button, event.time) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
599 |
return False |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
600 |
|
762
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
601 |
def _file_popup_menu(self, treeview, button=0, time=0): |
760
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
602 |
if self.curfile is None: |
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
603 |
return |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
604 |
if self.graphview: |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
605 |
is_mark = self.graphview.get_mark_rev() is not None |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
606 |
else: |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
607 |
is_mark = False |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
608 |
self._file_diff_to_mark_menu.set_sensitive(is_mark) |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
609 |
self._file_diff_from_mark_menu.set_sensitive(is_mark) |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
610 |
self._filemenu.popup(None, None, None, button, time) |
899
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
611 |
|
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
612 |
# If the filelog entry this changeset references does not link |
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
613 |
# back to this changeset, it means this changeset did not |
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
614 |
# actually change the contents of this file, and thus the file |
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
615 |
# cannot be annotated at this revision (since this changeset |
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
616 |
# does not appear in the filelog) |
0d0b6b26345e
hggtk/changeset: disable annotate cmenu when necessary
Steve Borho <steve@borho.org>
parents:
897
diff
changeset
|
617 |
ctx = self.repo.changectx(self.currev) |
966
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
618 |
try: |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
619 |
fctx = ctx.filectx(self.curfile) |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
620 |
has_filelog = fctx.filelog().linkrev(fctx.filenode()) == ctx.rev() |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
621 |
except revlog.LookupError: |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
622 |
has_filelog = False |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
623 |
self._ann_menu.set_sensitive(has_filelog) |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
624 |
self._save_menu.set_sensitive(has_filelog) |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
625 |
return True |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
626 |
|
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
627 |
def _file_row_act(self, tree, path, column) : |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
628 |
"""Default action is the first entry in the context menu |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
629 |
""" |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
630 |
self._filemenu.get_children()[0].activate() |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
631 |
return True |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
632 |
|
966
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
633 |
def _save_file_rev(self, menuitem): |
1022
fbd4883d07c1
hggtk/changeset: use util.localpath() to create safe path names
Steve Borho <steve@borho.org>
parents:
1020
diff
changeset
|
634 |
file = util.localpath(self.curfile) |
fbd4883d07c1
hggtk/changeset: use util.localpath() to create safe path names
Steve Borho <steve@borho.org>
parents:
1020
diff
changeset
|
635 |
file, ext = os.path.splitext(os.path.basename(file)) |
966
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
636 |
filename = "%s@%d%s" % (file, self.currev, ext) |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
637 |
fd = NativeSaveFileDialogWrapper(Title = "Save file to", |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
638 |
InitialDir=self.cwd, |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
639 |
FileName=filename) |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
640 |
result = fd.run() |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
641 |
if result: |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
642 |
import Queue |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
643 |
import hglib |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
644 |
q = Queue.Queue() |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
645 |
cpath = util.canonpath(self.repo.root, self.cwd, self.curfile) |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
646 |
hglib.hgcmd_toq(self.repo.root, q, 'cat', '--rev', |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
647 |
str(self.currev), '--output', result, cpath) |
51c8bfc32a95
hggtk/changeset: add 'save at revision' option
Steve Borho <steve@borho.org>
parents:
935
diff
changeset
|
648 |
|
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
649 |
def _view_file_rev(self, menuitem): |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
650 |
'''User selected view file revision from the file list context menu''' |
967
9a1704668ab8
hggtk/changeset: catch activation events on '[Description]' row
Steve Borho <steve@borho.org>
parents:
966
diff
changeset
|
651 |
if not self.curfile: |
9a1704668ab8
hggtk/changeset: catch activation events on '[Description]' row
Steve Borho <steve@borho.org>
parents:
966
diff
changeset
|
652 |
# ignore view events for the [Description] row |
9a1704668ab8
hggtk/changeset: catch activation events on '[Description]' row
Steve Borho <steve@borho.org>
parents:
966
diff
changeset
|
653 |
return |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
654 |
rev = self.currev |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
655 |
parents = self.parents |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
656 |
if len(parents) == 0: |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
657 |
parent = rev-1 |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
658 |
else: |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
659 |
parent = parents[0] |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
660 |
pair = '%u:%u' % (parent, rev) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
661 |
self._node1, self._node2 = cmdutil.revpair(self.repo, [pair]) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
662 |
self._view_file('M', self.curfile, force_left=False) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
663 |
|
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
664 |
def _diff_file_to_mark(self, menuitem): |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
665 |
'''User selected diff to mark from the file list context menu''' |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
666 |
from status import GStatus |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
667 |
from gtools import cmdtable |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
668 |
rev0 = self.graphview.get_mark_rev() |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
669 |
rev1 = self.currev |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
670 |
statopts = self.merge_opts(cmdtable['gstatus|gst'][1], |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
671 |
('include', 'exclude', 'git')) |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
672 |
statopts['rev'] = ['%u:%u' % (rev1, rev0)] |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
673 |
statopts['modified'] = True |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
674 |
statopts['added'] = True |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
675 |
statopts['removed'] = True |
760
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
676 |
dialog = GStatus(self.ui, self.repo, self.cwd, [self.curfile], |
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
677 |
statopts, False) |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
678 |
dialog.display() |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
679 |
return True |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
680 |
|
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
681 |
def _diff_file_from_mark(self, menuitem): |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
682 |
'''User selected diff from mark from the file list context menu''' |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
683 |
from status import GStatus |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
684 |
from gtools import cmdtable |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
685 |
rev0 = self.graphview.get_mark_rev() |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
686 |
rev1 = self.currev |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
687 |
statopts = self.merge_opts(cmdtable['gstatus|gst'][1], |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
688 |
('include', 'exclude', 'git')) |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
689 |
statopts['rev'] = ['%u:%u' % (rev0, rev1)] |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
690 |
statopts['modified'] = True |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
691 |
statopts['added'] = True |
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
692 |
statopts['removed'] = True |
760
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
693 |
dialog = GStatus(self.ui, self.repo, self.cwd, [self.curfile], |
d05fc39548fe
hggtk/history: add 'Contents' to file list
Steve Borho <steve@borho.org>
parents:
758
diff
changeset
|
694 |
statopts, False) |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
695 |
dialog.display() |
762
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
696 |
|
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
697 |
def _ann_file(self, menuitem): |
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
698 |
'''User selected diff from mark from the file list context menu''' |
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
699 |
from datamine import DataMineDialog |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
700 |
rev = self.currev |
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
701 |
dialog = DataMineDialog(self.ui, self.repo, self.cwd, [], {}, False) |
762
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
702 |
dialog.display() |
7613d8ecab69
hggtk/datamine: initial data mining tool
Steve Borho <steve@borho.org>
parents:
761
diff
changeset
|
703 |
dialog.add_annotate_page(self.curfile, str(rev)) |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
704 |
|
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
705 |
def _file_history(self, menuitem): |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
706 |
'''User selected file history from file list context menu''' |
779
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
707 |
if self.glog_parent: |
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
708 |
# If this changeset browser is embedded in glog, send |
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
709 |
# send this event to the main app |
847
8529972ac654
hggtk/vis: show entire file log history
Steve Borho <steve@borho.org>
parents:
841
diff
changeset
|
710 |
opts = {'filehist' : self.curfile} |
779
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
711 |
self.glog_parent.custombutton.set_active(True) |
841
04852a1aac1b
hggtk: hookup filelog grapher to current dialogs
Steve Borho <steve@borho.org>
parents:
820
diff
changeset
|
712 |
self.glog_parent.graphview.refresh(True, None, opts) |
779
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
713 |
else: |
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
714 |
# Else launch our own GLog instance |
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
715 |
from history import GLog |
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
716 |
dialog = GLog(self.ui, self.repo, self.cwd, [self.repo.root], |
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
717 |
{}, False) |
847
8529972ac654
hggtk/vis: show entire file log history
Steve Borho <steve@borho.org>
parents:
841
diff
changeset
|
718 |
dialog.open_with_file(self.curfile) |
779
e832047c90a3
hggtk/history: grand integration of history, changeset, datamine
Steve Borho <steve@borho.org>
parents:
778
diff
changeset
|
719 |
dialog.display() |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
720 |
|
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
721 |
def _revert_file(self, menuitem): |
757
d96c8f70d6fc
hggtk/history: add file diff to/from marked revision
Steve Borho <steve@borho.org>
parents:
756
diff
changeset
|
722 |
'''User selected file revert from the file list context menu''' |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
723 |
rev = self.currev |
756
962b683d9740
hggtk/history: require confirmation before file revert
Steve Borho <steve@borho.org>
parents:
755
diff
changeset
|
724 |
dialog = Confirm('revert file to old revision', [], self, |
962b683d9740
hggtk/history: require confirmation before file revert
Steve Borho <steve@borho.org>
parents:
755
diff
changeset
|
725 |
'Revert %s to contents at revision %d?' % (self.curfile, rev)) |
962b683d9740
hggtk/history: require confirmation before file revert
Steve Borho <steve@borho.org>
parents:
755
diff
changeset
|
726 |
if dialog.run() == gtk.RESPONSE_NO: |
962b683d9740
hggtk/history: require confirmation before file revert
Steve Borho <steve@borho.org>
parents:
755
diff
changeset
|
727 |
return |
755
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
728 |
cmdline = ['hg', 'revert', '--verbose', '--rev', str(rev), self.curfile] |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
729 |
self.restore_cwd() |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
730 |
dlg = CmdDialog(cmdline) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
731 |
dlg.run() |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
732 |
dlg.hide() |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
733 |
shell_notify([self.curfile]) |
53c756739ed9
hggtk/history: add context menu to file list
Steve Borho <steve@borho.org>
parents:
751
diff
changeset
|
734 |
|
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
735 |
def run(root='', cwd='', files=[], **opts): |
389
b01d903c3601
hggtk/history: use glog command as changelog browser
Steve Borho <steve@borho.org>
parents:
288
diff
changeset
|
736 |
u = ui.ui() |
b01d903c3601
hggtk/history: use glog command as changelog browser
Steve Borho <steve@borho.org>
parents:
288
diff
changeset
|
737 |
u.updateopts(debug=False, traceback=False) |
b01d903c3601
hggtk/history: use glog command as changelog browser
Steve Borho <steve@borho.org>
parents:
288
diff
changeset
|
738 |
repo = hg.repository(u, path=root) |
207
13c6675d5e70
hggtk: add support to select revision from history dialog
TK Soh <teekaysoh@yahoo.com>
parents:
199
diff
changeset
|
739 |
|
798
0bf50e93e713
hggtk: rename GChange to ChangeSet
Steve Borho <steve@borho.org>
parents:
793
diff
changeset
|
740 |
dialog = ChangeSet(u, repo, cwd, files, opts, True) |
776
0e1a45676b81
hggtk/change: new changeset browser
Steve Borho <steve@borho.org>
parents:
770
diff
changeset
|
741 |
dialog.display() |
658
ac87992eb102
hggtk/history: re-enable file/dir log filtering
Steve Borho <steve@borho.org>
parents:
657
diff
changeset
|
742 |
|
423
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
743 |
gtk.gdk.threads_init() |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
744 |
gtk.gdk.threads_enter() |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
745 |
gtk.main() |
6bc79fa0ce34
hggtk: move gtools dialogs into their respective modules
TK Soh <teekaysoh@yahoo.com>
parents:
401
diff
changeset
|
746 |
gtk.gdk.threads_leave() |
207
13c6675d5e70
hggtk: add support to select revision from history dialog
TK Soh <teekaysoh@yahoo.com>
parents:
199
diff
changeset
|
747 |
|
196
e7081a06625c
hggtk: add dialog to browse revision history
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
748 |
if __name__ == "__main__": |
e7081a06625c
hggtk: add dialog to browse revision history
TK Soh <teekaysoh@yahoo.com>
parents:
diff
changeset
|
749 |
import sys |
401
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
389
diff
changeset
|
750 |
opts = {} |
710
c0cde6f2994f
hggtk/history: log filter dialog is basically complete
Steve Borho <steve@borho.org>
parents:
706
diff
changeset
|
751 |
opts['root'] = len(sys.argv) > 1 and sys.argv[1] or os.getcwd() |
777
b1c1d02e5cf1
hggtk/change: hookup parents toggle, add child links
Steve Borho <steve@borho.org>
parents:
776
diff
changeset
|
752 |
opts['rev'] = ['750'] |
401
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
389
diff
changeset
|
753 |
run(**opts) |