/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to diff.py

  • Committer: Curtis Hovey
  • Date: 2012-01-23 21:47:33 UTC
  • mto: This revision was merged to the branch mainline in revision 772.
  • Revision ID: sinzui.is@verizon.net-20120123214733-phsle23bl60mezc2
PEP8 changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
"""
6
6
 
7
7
__copyright__ = "Copyright 2005 Canonical Ltd."
8
 
__author__    = "Scott James Remnant <scott@ubuntu.com>"
 
8
__author__ = "Scott James Remnant <scott@ubuntu.com>"
9
9
 
10
10
 
11
11
from cStringIO import StringIO
12
12
 
13
 
from gi.repository import Gtk
14
 
from gi.repository import Pango
15
13
import os
16
14
import re
17
15
import sys
18
16
import inspect
19
17
try:
20
 
    from xml.etree.ElementTree import Element, SubElement, tostring
 
18
    from xml.etree.ElementTree import (
 
19
        Element,
 
20
        SubElement,
 
21
        tostring,
 
22
        )
 
23
    Element, SubElement, tostring  # Hush PEP8 redefinition.
21
24
except ImportError:
22
 
    from elementtree.ElementTree import Element, SubElement, tostring
 
25
    from elementtree.ElementTree import (
 
26
        Element,
 
27
        SubElement,
 
28
        tostring,
 
29
        )
23
30
 
 
31
from gi.repository import Gtk
 
32
from gi.repository import Pango
24
33
try:
25
34
    from gi.repository import GtkSource
26
35
    have_gtksourceview = True
38
47
    osutils,
39
48
    urlutils,
40
49
    workingtree,
41
 
)
 
50
    )
42
51
from bzrlib.diff import show_diff_trees
43
52
from bzrlib.patches import parse_patches
44
53
from bzrlib.trace import warning
112
121
        if style_scheme_name is not None:
113
122
            style_scheme_mgr = GtkSource.StyleSchemeManager()
114
123
            style_scheme_mgr.append_search_path(GEDIT_USER_STYLES_PATH)
115
 
            
 
124
 
116
125
            style_scheme = style_scheme_mgr.get_scheme(style_scheme_name)
117
 
            
 
126
 
118
127
            if style_scheme is not None:
119
128
                buf.set_style_scheme(style_scheme)
120
129
 
128
137
        """
129
138
        scheme_manager = GtkSource.StyleSchemeManager()
130
139
        style_scheme = scheme_manager.get_scheme('colordiff')
131
 
        
 
140
 
132
141
        # if style scheme not found, we'll generate it from colordiffrc
133
142
        # TODO: reload if colordiffrc has changed.
134
143
        if style_scheme is None:
148
157
            if not colors:
149
158
                # ~/.colordiffrc does not exist
150
159
                return
151
 
            
 
160
 
152
161
            mapping = {
153
162
                # map GtkSourceView2 scheme styles to colordiff names
154
163
                # since GSV is richer, accept new names for extra bits,
159
168
                'diff:file': ['file', 'diffstuff'],
160
169
                'diff:special-case': ['specialcase', 'diffstuff'],
161
170
            }
162
 
            
 
171
 
163
172
            converted_colors = {}
164
173
            for name, values in mapping.items():
165
174
                color = None
170
179
                if color is None:
171
180
                    continue
172
181
                converted_colors[name] = color
173
 
            
 
182
 
174
183
            # some xml magic to produce needed style scheme description
175
184
            e_style_scheme = Element('style-scheme')
176
185
            e_style_scheme.set('id', 'colordiff')
180
189
                style = SubElement(e_style_scheme, 'style')
181
190
                style.set('name', name)
182
191
                style.set('foreground', '#%s' % color)
183
 
            
 
192
 
184
193
            scheme_xml = tostring(e_style_scheme, 'UTF-8')
185
 
            if not os.path.exists(os.path.expanduser('~/.local/share/gtksourceview-2.0/styles')):
186
 
                os.makedirs(os.path.expanduser('~/.local/share/gtksourceview-2.0/styles'))
187
 
            file(os.path.expanduser('~/.local/share/gtksourceview-2.0/styles/colordiff.xml'), 'w').write(scheme_xml)
188
 
            
 
194
            if not os.path.exists(os.path.expanduser(
 
195
                '~/.local/share/gtksourceview-2.0/styles')):
 
196
                os.makedirs(os.path.expanduser(
 
197
                    '~/.local/share/gtksourceview-2.0/styles'))
 
198
            file(os.path.expanduser(
 
199
                '~/.local/share/gtksourceview-2.0/styles/colordiff.xml'),
 
200
                'w').write(scheme_xml)
 
201
 
189
202
            scheme_manager.force_rescan()
190
203
            style_scheme = scheme_manager.get_scheme('colordiff')
191
 
        
 
204
 
192
205
        buf.set_style_scheme(style_scheme)
193
206
 
194
207
    @staticmethod
216
229
#        self.parent_tree.lock_read()
217
230
#        self.rev_tree.lock_read()
218
231
#        try:
219
 
#            self.delta = iter_changes_to_status(self.parent_tree, self.rev_tree)
 
232
#            self.delta = iter_changes_to_status(
 
233
#               self.parent_tree, self.rev_tree)
220
234
#            self.path_to_status = {}
221
235
#            self.path_to_diff = {}
222
236
#            source_inv = self.parent_tree.inventory
223
237
#            target_inv = self.rev_tree.inventory
224
238
#            for (file_id, real_path, change_type, display_path) in self.delta:
225
 
#                self.path_to_status[real_path] = u'=== %s %s' % (change_type, display_path)
 
239
#                self.path_to_status[real_path] = u'=== %s %s' % (
 
240
#                    change_type, display_path)
226
241
#                if change_type in ('modified', 'renamed and modified'):
227
242
#                    source_ie = source_inv[file_id]
228
243
#                    target_ie = target_inv[file_id]
230
245
#                    source_ie.diff(internal_diff, *old path, *old_tree,
231
246
#                                   *new_path, target_ie, self.rev_tree,
232
247
#                                   sio)
233
 
#                    self.path_to_diff[real_path] = 
 
248
#                    self.path_to_diff[real_path] =
234
249
#
235
250
#        finally:
236
251
#            self.rev_tree.unlock()
297
312
        self.pack1(scrollwin)
298
313
        if self.SHOW_WIDGETS:
299
314
            scrollwin.show()
300
 
        
 
315
 
301
316
        self.model = Gtk.TreeStore(str, str)
302
317
        self.treeview = Gtk.TreeView(model=self.model)
303
318
        self.treeview.set_headers_visible(False)
353
368
        self.model.clear()
354
369
        delta = self.rev_tree.changes_from(self.parent_tree)
355
370
 
356
 
        self.model.append(None, [ "Complete Diff", "" ])
 
371
        self.model.append(None, ["Complete Diff", ""])
357
372
 
358
373
        if len(delta.added):
359
 
            titer = self.model.append(None, [ "Added", None ])
 
374
            titer = self.model.append(None, ["Added", None])
360
375
            for path, id, kind in delta.added:
361
 
                self.model.append(titer, [ path, path ])
 
376
                self.model.append(titer, [path, path])
362
377
 
363
378
        if len(delta.removed):
364
 
            titer = self.model.append(None, [ "Removed", None ])
 
379
            titer = self.model.append(None, ["Removed", None])
365
380
            for path, id, kind in delta.removed:
366
 
                self.model.append(titer, [ path, path ])
 
381
                self.model.append(titer, [path, path])
367
382
 
368
383
        if len(delta.renamed):
369
 
            titer = self.model.append(None, [ "Renamed", None ])
 
384
            titer = self.model.append(None, ["Renamed", None])
370
385
            for oldpath, newpath, id, kind, text_modified, meta_modified \
371
386
                    in delta.renamed:
372
 
                self.model.append(titer, [ oldpath, newpath ])
 
387
                self.model.append(titer, [oldpath, newpath])
373
388
 
374
389
        if len(delta.modified):
375
 
            titer = self.model.append(None, [ "Modified", None ])
 
390
            titer = self.model.append(None, ["Modified", None])
376
391
            for path, id, kind, text_modified, meta_modified in delta.modified:
377
 
                self.model.append(titer, [ path, path ])
 
392
                self.model.append(titer, [path, path])
378
393
 
379
394
        self.treeview.expand_all()
380
395
        self.diff_view.show_diff(None)
397
412
        (path, col) = self.treeview.get_cursor()
398
413
        if path is None:
399
414
            return
400
 
        specific_files = [ self.model[path][1] ]
401
 
        if specific_files == [ None ]:
 
415
        specific_files = [self.model[path][1]]
 
416
        if specific_files == [None]:
402
417
            return
403
 
        elif specific_files == [ "" ]:
 
418
        elif specific_files == [""]:
404
419
            specific_files = None
405
 
        
 
420
 
406
421
        self.diff_view.show_diff(specific_files)
407
 
    
 
422
 
408
423
    def _on_wraplines_toggled(self, widget=None, wrap=False):
409
424
        """Callback for when the wrap lines checkbutton is toggled"""
410
425
        if wrap or widget.get_active():
412
427
        else:
413
428
            self.diff_view.sourceview.set_wrap_mode(Gtk.WrapMode.NONE)
414
429
 
 
430
 
415
431
class DiffWindow(Window):
416
432
    """Diff window.
417
433
 
446
462
        hbox = self._get_button_bar(operations)
447
463
        if hbox is not None:
448
464
            self.vbox.pack_start(hbox, False, True, 0)
449
 
        
450
 
    
 
465
 
451
466
    def _get_menu_bar(self):
452
467
        menubar = Gtk.MenuBar()
453
468
        # View menu
464
479
        menubar.append(mb_view)
465
480
        menubar.show()
466
481
        return menubar
467
 
    
 
482
 
468
483
    def _get_button_bar(self, operations):
469
484
        """Return a button bar to use.
470
485