Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.7, 0.7.1, and 0.7.2

diffs: pychecker found an undefined exception

This dates back to the initial import from bzr. Can this file go away?

Changeset 10500b908cea

Parent 4e6dc1ec3312

by Steve Borho

Changes to one file · Browse files at 10500b908cea Showing diff from parent 4e6dc1ec3312 Diff from another changeset...

Change 1 of 1 Show Changes Only hggtk/​diff.py Stacked
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
 
 
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
 #!/usr/bin/python  # -*- coding: UTF-8 -*-  """Difference window.    This module contains the code to manage the diff window which shows  the changes made between two revisions on a branch.  """    __copyright__ = "Copyright © 2005 Canonical Ltd."  __author__ = "Scott James Remnant <scott@ubuntu.com>"    import gtk  import pango  import sys  from hglib import gettabwidth, RepoError  from mercurial import hg, ui, cmdutil, util, patch  from mercurial.i18n import _  from shlib import set_tortoise_icon   +class NoSuchFile(Exception): + def __init__(self, filename): + self.filename = filename +  class DiffWindow(gtk.Window):   """Diff window.     This object represents and manages a single window containing the   differences between two revisions on a branch.   """     def __init__(self):   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)   set_tortoise_icon(self, 'menudiff.ico')   self.set_border_width(0)   self.set_title("diff")     # Use two thirds of the screen by default   screen = self.get_screen()   monitor = screen.get_monitor_geometry(0)   width = int(monitor.width * 0.66)   height = int(monitor.height * 0.66)   self.set_default_size(width, height)     self.construct()     def construct(self):   """Construct the window contents."""   # The window consists of a pane containing: the   # hierarchical list of files on the left, and the diff   # for the currently selected file on the right.   pane = gtk.HPaned()   self.add(pane)   pane.show()     # The file hierarchy: a scrollable treeview   scrollwin = gtk.ScrolledWindow()   scrollwin.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)   scrollwin.set_shadow_type(gtk.SHADOW_IN)   pane.pack1(scrollwin)   scrollwin.show()     self.model = gtk.TreeStore(str, str)   self.treeview = gtk.TreeView(self.model)   self.treeview.set_headers_visible(False)   self.treeview.set_search_column(1)   self.treeview.connect("cursor-changed", self._treeview_cursor_cb)   scrollwin.add(self.treeview)   self.treeview.show()     cell = gtk.CellRendererText()   cell.set_property("width-chars", 20)   column = gtk.TreeViewColumn()   column.pack_start(cell, expand=True)   column.add_attribute(cell, "text", 0)   self.treeview.append_column(column)     # The diffs of the selected file: a scrollable source or   # text view   scrollwin = gtk.ScrolledWindow()   scrollwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)   scrollwin.set_shadow_type(gtk.SHADOW_IN)   pane.pack2(scrollwin)   scrollwin.show()   self.tabwidth = gettabwidth(self.ui)     try:   import gtksourceview   self.buffer = gtksourceview.SourceBuffer()   slm = gtksourceview.SourceLanguagesManager()   gsl = slm.get_language_from_mime_type("text/x-patch")   self.buffer.set_language(gsl)   self.buffer.set_highlight(True)     sourceview = gtksourceview.SourceView(self.buffer)   except ImportError:   self.buffer = gtk.TextBuffer()   sourceview = gtk.TextView(self.buffer)     sourceview.set_editable(False)   sourceview.modify_font(pango.FontDescription("Monospace"))   scrollwin.add(sourceview)   sourceview.show()     def set_diff(self, root='', files=[], description=''):   """Set the differences showed by this window.     Compares the two trees and populates the window with the   differences.   """   self.root = root   self.files = files     # open Hg repo   self.ui = ui.ui()   try:   self.repo = hg.repository(self.ui, path=self.root)   except RepoError:   return None     matcher = cmdutil.match(self.repo, self.files)   modified, added, removed = self.repo.status(match=matcher)[0:3]   self.files = matcher.files()     self.model.clear()   self.model.append(None, [ "Complete Diff", "" ])     if len(added):   titer = self.model.append(None, [ "Added", None ])   for path in added:   self.model.append(titer, [ path, path ])     if len(removed):   titer = self.model.append(None, [ "Removed", None ])   for path in removed:   self.model.append(titer, [ path, path ])     if len(modified):   titer = self.model.append(None, [ "Modified", None ])   for path in modified:   self.model.append(titer, [ path, path ])     self.treeview.expand_all()   self.set_title("TortoseHg diff - " + description)     def set_file(self, file_path):   tv_path = None   for data in self.model:   for child in data.iterchildren():   if child[0] == file_path or child[1] == file_path:   tv_path = child.path   break   if tv_path is None:   raise NoSuchFile(file_path)   self.treeview.set_cursor(tv_path)   self.treeview.scroll_to_cell(tv_path)     def _treeview_cursor_cb(self, *args):   """Callback for when the treeview cursor changes."""   (path, col) = self.treeview.get_cursor()   specific_files = [ self.model[path][1] ]   if specific_files == [ None ]:   return   elif specific_files == [ "" ]:   specific_files = self.files     diff = self._get_hg_diff(specific_files)   diff = diff.decode(sys.getdefaultencoding(), 'replace')   if self.tabwidth:   diff = diff.expandtabs(self.tabwidth)   self.buffer.set_text(diff)     def _get_hg_diff(self, files):   self.repo.ui.pushbuffer()   patch.diff(self.repo, files=files)   difflines = self.repo.ui.popbuffer()   return difflines     def _set_as_window(self):   self.connect("destroy", gtk.main_quit)     def _set_as_dialog(self, modal=False):   self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)   self.set_modal(modal)    def run(root='', files=[], **opts):   diff = DiffWindow()   diff.set_diff(root, files)   diff._set_as_window()   diff.show()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave()    if __name__ == "__main__":   run(**{})