/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: 2011-07-31 15:52:43 UTC
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: sinzui.is@verizon.net-20110731155243-ln8istmxbryhb4pz
Mechanical changes made by pygi.convert.sh.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
 
13
13
import pygtk
14
14
pygtk.require("2.0")
15
 
import gtk
16
 
import pango
 
15
from gi.repository import Gtk
 
16
from gi.repository import Pango
17
17
import os
18
18
import re
19
19
import sys
24
24
    from elementtree.ElementTree import Element, SubElement, tostring
25
25
 
26
26
try:
27
 
    import gtksourceview2
 
27
    from gi.repository import GtkSource
28
28
    have_gtksourceview = True
29
29
except ImportError:
30
30
    have_gtksourceview = False
31
31
try:
32
 
    import gconf
 
32
    from gi.repository import GConf
33
33
    have_gconf = True
34
34
except ImportError:
35
35
    have_gconf = False
66
66
    pass
67
67
 
68
68
 
69
 
class DiffFileView(gtk.ScrolledWindow):
 
69
class DiffFileView(Gtk.ScrolledWindow):
70
70
    """Window for displaying diffs from a diff file"""
71
71
 
72
72
    def __init__(self):
73
 
        gtk.ScrolledWindow.__init__(self)
 
73
        GObject.GObject.__init__(self)
74
74
        self.construct()
75
75
        self._diffs = {}
76
76
 
77
77
    def construct(self):
78
 
        self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
79
 
        self.set_shadow_type(gtk.SHADOW_IN)
 
78
        self.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
 
79
        self.set_shadow_type(Gtk.ShadowType.IN)
80
80
 
81
81
        if have_gtksourceview:
82
 
            self.buffer = gtksourceview2.Buffer()
83
 
            slm = gtksourceview2.LanguageManager()
84
 
            guess_language = getattr(gtksourceview2.LanguageManager, 
 
82
            self.buffer = GtkSource.Buffer()
 
83
            slm = GtkSource.LanguageManager()
 
84
            guess_language = getattr(GtkSource.LanguageManager, 
85
85
                "guess_language", fallback_guess_language)
86
86
            gsl = guess_language(slm, content_type="text/x-patch")
87
87
            if have_gconf:
90
90
            self.buffer.set_language(gsl)
91
91
            self.buffer.set_highlight_syntax(True)
92
92
 
93
 
            self.sourceview = gtksourceview2.View(self.buffer)
 
93
            self.sourceview = GtkSource.View(self.buffer)
94
94
        else:
95
 
            self.buffer = gtk.TextBuffer()
96
 
            self.sourceview = gtk.TextView(self.buffer)
 
95
            self.buffer = Gtk.TextBuffer()
 
96
            self.sourceview = Gtk.TextView(self.buffer)
97
97
 
98
98
        self.sourceview.set_editable(False)
99
 
        self.sourceview.modify_font(pango.FontDescription("Monospace"))
 
99
        self.sourceview.modify_font(Pango.FontDescription("Monospace"))
100
100
        self.add(self.sourceview)
101
101
        self.sourceview.show()
102
102
 
106
106
 
107
107
        This method needs the gconf module.
108
108
 
109
 
        :param buf: a gtksourceview2.Buffer object.
 
109
        :param buf: a GtkSource.Buffer object.
110
110
        """
111
111
        GEDIT_SCHEME_PATH = '/apps/gedit-2/preferences/editor/colors/scheme'
112
112
        GEDIT_USER_STYLES_PATH = os.path.expanduser('~/.gnome2/gedit/styles')
113
113
 
114
 
        client = gconf.client_get_default()
 
114
        client = GConf.Client.get_default()
115
115
        style_scheme_name = client.get_string(GEDIT_SCHEME_PATH)
116
116
        if style_scheme_name is not None:
117
 
            style_scheme_mgr = gtksourceview2.StyleSchemeManager()
 
117
            style_scheme_mgr = GtkSource.StyleSchemeManager()
118
118
            style_scheme_mgr.append_search_path(GEDIT_USER_STYLES_PATH)
119
119
            
120
120
            style_scheme = style_scheme_mgr.get_scheme(style_scheme_name)
128
128
 
129
129
        Both ~/.colordiffrc and ~/.colordiffrc.bzr-gtk are read.
130
130
 
131
 
        :param buf: a "Diff" gtksourceview2.Buffer object.
 
131
        :param buf: a "Diff" GtkSource.Buffer object.
132
132
        """
133
 
        scheme_manager = gtksourceview2.StyleSchemeManager()
 
133
        scheme_manager = GtkSource.StyleSchemeManager()
134
134
        style_scheme = scheme_manager.get_scheme('colordiff')
135
135
        
136
136
        # if style scheme not found, we'll generate it from colordiffrc
284
284
        self.buffer.set_text(decoded.encode('UTF-8'))
285
285
 
286
286
 
287
 
class DiffWidget(gtk.HPaned):
 
287
class DiffWidget(Gtk.HPaned):
288
288
    """Diff widget
289
289
 
290
290
    """
292
292
        super(DiffWidget, self).__init__()
293
293
 
294
294
        # The file hierarchy: a scrollable treeview
295
 
        scrollwin = gtk.ScrolledWindow()
296
 
        scrollwin.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
297
 
        scrollwin.set_shadow_type(gtk.SHADOW_IN)
 
295
        scrollwin = Gtk.ScrolledWindow()
 
296
        scrollwin.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
 
297
        scrollwin.set_shadow_type(Gtk.ShadowType.IN)
298
298
        self.pack1(scrollwin)
299
299
        scrollwin.show()
300
300
        
301
 
        self.model = gtk.TreeStore(str, str)
302
 
        self.treeview = gtk.TreeView(self.model)
 
301
        self.model = Gtk.TreeStore(str, str)
 
302
        self.treeview = Gtk.TreeView(self.model)
303
303
        self.treeview.set_headers_visible(False)
304
304
        self.treeview.set_search_column(1)
305
305
        self.treeview.connect("cursor-changed", self._treeview_cursor_cb)
306
306
        scrollwin.add(self.treeview)
307
307
        self.treeview.show()
308
308
 
309
 
        cell = gtk.CellRendererText()
 
309
        cell = Gtk.CellRendererText()
310
310
        cell.set_property("width-chars", 20)
311
 
        column = gtk.TreeViewColumn()
312
 
        column.pack_start(cell, expand=True)
 
311
        column = Gtk.TreeViewColumn()
 
312
        column.pack_start(cell, True, True, 0)
313
313
        column.add_attribute(cell, "text", 0)
314
314
        self.treeview.append_column(column)
315
315
 
403
403
    def _on_wraplines_toggled(self, widget=None, wrap=False):
404
404
        """Callback for when the wrap lines checkbutton is toggled"""
405
405
        if wrap or widget.get_active():
406
 
            self.diff_view.sourceview.set_wrap_mode(gtk.WRAP_WORD)
 
406
            self.diff_view.sourceview.set_wrap_mode(Gtk.WrapMode.WORD)
407
407
        else:
408
 
            self.diff_view.sourceview.set_wrap_mode(gtk.WRAP_NONE)
 
408
            self.diff_view.sourceview.set_wrap_mode(Gtk.WrapMode.NONE)
409
409
 
410
410
class DiffWindow(Window):
411
411
    """Diff window.
429
429
 
430
430
    def construct(self, operations):
431
431
        """Construct the window contents."""
432
 
        self.vbox = gtk.VBox()
 
432
        self.vbox = Gtk.VBox()
433
433
        self.add(self.vbox)
434
434
        self.vbox.show()
435
435
        self.diff = DiffWidget()
444
444
        
445
445
    
446
446
    def _get_menu_bar(self):
447
 
        menubar = gtk.MenuBar()
 
447
        menubar = Gtk.MenuBar()
448
448
        # View menu
449
 
        mb_view = gtk.MenuItem(_i18n("_View"))
450
 
        mb_view_menu = gtk.Menu()
451
 
        mb_view_wrapsource = gtk.CheckMenuItem(_i18n("Wrap _Long Lines"))
 
449
        mb_view = Gtk.MenuItem(_i18n("_View"))
 
450
        mb_view_menu = Gtk.Menu()
 
451
        mb_view_wrapsource = Gtk.CheckMenuItem(_i18n("Wrap _Long Lines"))
452
452
        mb_view_wrapsource.connect('activate', self.diff._on_wraplines_toggled)
453
453
        mb_view_wrapsource.show()
454
454
        mb_view_menu.append(mb_view_wrapsource)
466
466
        """
467
467
        if operations is None:
468
468
            return None
469
 
        hbox = gtk.HButtonBox()
470
 
        hbox.set_layout(gtk.BUTTONBOX_START)
 
469
        hbox = Gtk.HButtonBox()
 
470
        hbox.set_layout(Gtk.ButtonBoxStyle.START)
471
471
        for title, method in operations:
472
 
            merge_button = gtk.Button(title)
 
472
            merge_button = Gtk.Button(title)
473
473
            merge_button.show()
474
 
            merge_button.set_relief(gtk.RELIEF_NONE)
 
474
            merge_button.set_relief(Gtk.ReliefStyle.NONE)
475
475
            merge_button.connect("clicked", method)
476
476
            hbox.pack_start(merge_button, expand=False, fill=True)
477
477
        hbox.show()
478
478
        return hbox
479
479
 
480
480
    def _get_merge_target(self):
481
 
        d = gtk.FileChooserDialog('Merge branch', self,
482
 
                                  gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
483
 
                                  buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
484
 
                                           gtk.STOCK_CANCEL,
485
 
                                           gtk.RESPONSE_CANCEL,))
 
481
        d = Gtk.FileChooserDialog('Merge branch', self,
 
482
                                  Gtk.FileChooserAction.SELECT_FOLDER,
 
483
                                  buttons=(Gtk.STOCK_OK, Gtk.ResponseType.OK,
 
484
                                           Gtk.STOCK_CANCEL,
 
485
                                           Gtk.ResponseType.CANCEL,))
486
486
        try:
487
487
            result = d.run()
488
 
            if result != gtk.RESPONSE_OK:
 
488
            if result != Gtk.ResponseType.OK:
489
489
                raise SelectCancelled()
490
490
            return d.get_current_folder_uri()
491
491
        finally:
505
505
        error_dialog('Error', str(e))
506
506
 
507
507
    def _get_save_path(self, basename):
508
 
        d = gtk.FileChooserDialog('Save As', self,
509
 
                                  gtk.FILE_CHOOSER_ACTION_SAVE,
510
 
                                  buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
511
 
                                           gtk.STOCK_CANCEL,
512
 
                                           gtk.RESPONSE_CANCEL,))
 
508
        d = Gtk.FileChooserDialog('Save As', self,
 
509
                                  Gtk.FileChooserAction.SAVE,
 
510
                                  buttons=(Gtk.STOCK_OK, Gtk.ResponseType.OK,
 
511
                                           Gtk.STOCK_CANCEL,
 
512
                                           Gtk.ResponseType.CANCEL,))
513
513
        d.set_current_name(basename)
514
514
        try:
515
515
            result = d.run()
516
 
            if result != gtk.RESPONSE_OK:
 
516
            if result != Gtk.ResponseType.OK:
517
517
                raise SelectCancelled()
518
518
            return urlutils.local_path_from_url(d.get_uri())
519
519
        finally: