/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: Mark Lee
  • Date: 2009-07-11 18:39:14 UTC
  • mto: This revision was merged to the branch mainline in revision 661.
  • Revision ID: bzr@lazymalevolence.com-20090711183914-zuii3et5skiv2njo
Re-ignore credits.pickle.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
import os
18
18
import re
19
19
import sys
20
 
import inspect
21
 
try:
22
 
    from xml.etree.ElementTree import Element, SubElement, tostring
23
 
except ImportError:
24
 
    from elementtree.ElementTree import Element, SubElement, tostring
 
20
from xml.etree.ElementTree import Element, SubElement, tostring
25
21
 
26
22
try:
27
23
    import gtksourceview2
35
31
    have_gconf = False
36
32
 
37
33
from bzrlib import (
38
 
    errors,
39
34
    merge as _mod_merge,
40
35
    osutils,
 
36
    progress,
41
37
    urlutils,
42
38
    workingtree,
43
39
)
44
 
from bzrlib.diff import show_diff_trees
 
40
from bzrlib.diff import show_diff_trees, internal_diff
 
41
from bzrlib.errors import NoSuchFile
45
42
from bzrlib.patches import parse_patches
46
43
from bzrlib.trace import warning
47
 
from bzrlib.plugins.gtk.dialog import (
48
 
    error_dialog,
49
 
    info_dialog,
50
 
    warning_dialog,
51
 
    )
52
 
from bzrlib.plugins.gtk.i18n import _i18n
 
44
from bzrlib.plugins.gtk import _i18n
53
45
from bzrlib.plugins.gtk.window import Window
54
 
 
55
 
 
56
 
def fallback_guess_language(slm, content_type):
57
 
    for lang_id in slm.get_language_ids():
58
 
        lang = slm.get_language(lang_id)
59
 
        if "text/x-patch" in lang.get_mime_types():
60
 
            return lang
61
 
    return None
 
46
from dialog import error_dialog, info_dialog, warning_dialog
62
47
 
63
48
 
64
49
class SelectCancelled(Exception):
81
66
        if have_gtksourceview:
82
67
            self.buffer = gtksourceview2.Buffer()
83
68
            slm = gtksourceview2.LanguageManager()
84
 
            guess_language = getattr(gtksourceview2.LanguageManager, 
85
 
                "guess_language", fallback_guess_language)
86
 
            gsl = guess_language(slm, content_type="text/x-patch")
 
69
            gsl = slm.guess_language(content_type="text/x-patch")
87
70
            if have_gconf:
88
71
                self.apply_gedit_colors(self.buffer)
89
72
            self.apply_colordiff_colors(self.buffer)
109
92
        :param buf: a gtksourceview2.Buffer object.
110
93
        """
111
94
        GEDIT_SCHEME_PATH = '/apps/gedit-2/preferences/editor/colors/scheme'
112
 
        GEDIT_USER_STYLES_PATH = os.path.expanduser('~/.gnome2/gedit/styles')
113
95
 
114
96
        client = gconf.client_get_default()
115
97
        style_scheme_name = client.get_string(GEDIT_SCHEME_PATH)
116
98
        if style_scheme_name is not None:
117
 
            style_scheme_mgr = gtksourceview2.StyleSchemeManager()
118
 
            style_scheme_mgr.append_search_path(GEDIT_USER_STYLES_PATH)
119
 
            
120
 
            style_scheme = style_scheme_mgr.get_scheme(style_scheme_name)
121
 
            
122
 
            if style_scheme is not None:
123
 
                buf.set_style_scheme(style_scheme)
 
99
            style_scheme = gtksourceview2.StyleSchemeManager().get_scheme(style_scheme_name)
 
100
            
 
101
            buf.set_style_scheme(style_scheme)
124
102
 
125
103
    @classmethod
126
104
    def apply_colordiff_colors(klass, buf):
385
363
                    tv_path = child.path
386
364
                    break
387
365
        if tv_path is None:
388
 
            raise errors.NoSuchFile(file_path)
 
366
            raise NoSuchFile(file_path)
389
367
        self.treeview.set_cursor(tv_path)
390
368
        self.treeview.scroll_to_cell(tv_path)
391
369
 
534
512
 
535
513
class DiffController(object):
536
514
 
537
 
    def __init__(self, path, patch, window=None, allow_dirty=False):
 
515
    def __init__(self, path, patch, window=None):
538
516
        self.path = path
539
517
        self.patch = patch
540
 
        self.allow_dirty = allow_dirty
541
518
        if window is None:
542
519
            window = DiffWindow(operations=self._provide_operations())
543
520
            self.initialize_window(window)
549
526
 
550
527
    def get_diff_sections(self):
551
528
        yield "Complete Diff", None, ''.join(self.patch)
552
 
        # allow_dirty was added to parse_patches in bzrlib 2.2b1
553
 
        if 'allow_dirty' in inspect.getargspec(parse_patches).args:
554
 
            patches = parse_patches(self.patch, allow_dirty=self.allow_dirty)
555
 
        else:
556
 
            patches = parse_patches(self.patch)
557
 
        for patch in patches:
 
529
        for patch in parse_patches(self.patch):
558
530
            oldname = patch.oldname.split('\t')[0]
559
531
            newname = patch.newname.split('\t')[0]
560
532
            yield oldname, newname, str(patch)
599
571
        tree.lock_write()
600
572
        try:
601
573
            try:
602
 
                if tree.has_changes():
603
 
                    raise errors.UncommittedChanges(tree)
604
 
                merger, verified = _mod_merge.Merger.from_mergeable(
605
 
                    tree, self.directive, pb=None)
 
574
                merger, verified = _mod_merge.Merger.from_mergeable(tree,
 
575
                    self.directive, progress.DummyProgress())
 
576
                merger.check_basis(True)
606
577
                merger.merge_type = _mod_merge.Merge3Merger
607
578
                conflict_count = merger.do_merge()
608
579
                merger.set_pending()