/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 conflicts.py

  • Committer: David Planella
  • Date: 2011-03-06 08:24:07 UTC
  • mfrom: (718 trunk)
  • mto: This revision was merged to the branch mainline in revision 719.
  • Revision ID: david.planella@ubuntu.com-20110306082407-y9zwkjje5oue9egw
Added preliminary internationalization support. Merged from trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
 
17
try:
 
18
    import pygtk
 
19
    pygtk.require("2.0")
 
20
except:
 
21
    pass
 
22
 
17
23
import subprocess
18
24
 
19
 
from gi.repository import Gtk
20
 
from gi.repository import GObject
 
25
import gtk
 
26
import gobject
21
27
 
22
28
from bzrlib.config import GlobalConfig
23
 
from bzrlib.plugins.gtk.i18n import _i18n
24
 
from bzrlib.plugins.gtk.dialog import (
25
 
    error_dialog,
26
 
    warning_dialog,
27
 
    )
28
 
 
29
 
 
30
 
class ConflictsDialog(Gtk.Dialog):
 
29
from bzrlib.plugins.gtk import _i18n
 
30
 
 
31
from dialog import error_dialog, warning_dialog
 
32
 
 
33
 
 
34
class ConflictsDialog(gtk.Dialog):
31
35
    """ This dialog displays the list of conflicts. """
32
36
 
33
37
    def __init__(self, wt, parent=None):
34
38
        """ Initialize the Conflicts dialog. """
35
 
        super(ConflictsDialog, self).__init__(
36
 
            title="Conflicts - Olive", parent=parent, flags=0,
37
 
            buttons=(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL))
38
 
 
 
39
        gtk.Dialog.__init__(self, title="Conflicts - Olive",
 
40
                                  parent=parent,
 
41
                                  flags=0,
 
42
                                  buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CANCEL))
 
43
        
39
44
        # Get arguments
40
45
        self.wt = wt
41
 
 
 
46
        
42
47
        # Create the widgets
43
 
        self._scrolledwindow = Gtk.ScrolledWindow()
44
 
        self._treeview = Gtk.TreeView()
45
 
        self._label_diff3 = Gtk.Label(label=_i18n("External utility:"))
46
 
        self._entry_diff3 = Gtk.Entry()
47
 
        self._image_diff3 = Gtk.Image()
48
 
        self._button_diff3 = Gtk.Button()
49
 
        self._hbox_diff3 = Gtk.HBox()
50
 
 
 
48
        self._scrolledwindow = gtk.ScrolledWindow()
 
49
        self._treeview = gtk.TreeView()
 
50
        self._label_diff3 = gtk.Label(_i18n("External utility:"))
 
51
        self._entry_diff3 = gtk.Entry()
 
52
        self._image_diff3 = gtk.Image()
 
53
        self._button_diff3 = gtk.Button()
 
54
        self._hbox_diff3 = gtk.HBox()
 
55
        
51
56
        # Set callbacks
52
57
        self._button_diff3.connect('clicked', self._on_diff3_clicked)
53
 
 
 
58
        
54
59
        # Set properties
55
 
        self._scrolledwindow.set_policy(Gtk.PolicyType.AUTOMATIC,
56
 
                                        Gtk.PolicyType.AUTOMATIC)
57
 
        self._image_diff3.set_from_stock(Gtk.STOCK_APPLY, Gtk.IconSize.BUTTON)
 
60
        self._scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC,
 
61
                                        gtk.POLICY_AUTOMATIC)
 
62
        self._image_diff3.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON)
58
63
        self._button_diff3.set_image(self._image_diff3)
59
64
        self._entry_diff3.set_text(self._get_diff3())
60
65
        self._hbox_diff3.set_spacing(3)
61
 
        content_area = self.get_content_area()
62
 
        content_area.set_spacing(3)
 
66
        self.vbox.set_spacing(3)
63
67
        self.set_default_size(400, 300)
64
 
 
 
68
        
65
69
        # Construct dialog
66
 
        self._hbox_diff3.pack_start(self._label_diff3, False, False, 0)
67
 
        self._hbox_diff3.pack_start(self._entry_diff3, True, True, 0)
68
 
        self._hbox_diff3.pack_start(self._button_diff3, False, False, 0)
 
70
        self._hbox_diff3.pack_start(self._label_diff3, False, False)
 
71
        self._hbox_diff3.pack_start(self._entry_diff3, True, True)
 
72
        self._hbox_diff3.pack_start(self._button_diff3, False, False)
69
73
        self._scrolledwindow.add(self._treeview)
70
 
        content_area.pack_start(self._scrolledwindow, True, True, 0)
71
 
        content_area.pack_start(self._hbox_diff3, False, False, 0)
72
 
 
 
74
        self.vbox.pack_start(self._scrolledwindow, True, True)
 
75
        self.vbox.pack_start(self._hbox_diff3, False, False)
 
76
        
73
77
        # Create the conflict list
74
78
        self._create_conflicts()
75
 
 
 
79
        
76
80
        # Show the dialog
77
 
        content_area.show_all()
78
 
 
 
81
        self.vbox.show_all()
 
82
    
79
83
    def _get_diff3(self):
80
84
        """ Get the specified diff3 utility. Default is meld. """
81
85
        config = GlobalConfig()
83
87
        if diff3 is None:
84
88
            diff3 = 'meld'
85
89
        return diff3
86
 
 
 
90
    
87
91
    def _set_diff3(self, cmd):
88
92
        """ Set the default diff3 utility to cmd. """
89
93
        config = GlobalConfig()
90
94
        config.set_user_option('gconflicts_diff3', cmd)
91
 
 
 
95
    
92
96
    def _create_conflicts(self):
93
97
        """ Construct the list of conflicts. """
94
98
        if len(self.wt.conflicts()) == 0:
95
 
            self.model = Gtk.ListStore(GObject.TYPE_STRING)
 
99
            self.model = gtk.ListStore(gobject.TYPE_STRING)
96
100
            self._treeview.set_model(self.model)
97
 
            self._treeview.append_column(Gtk.TreeViewColumn(_i18n('Conflicts'),
98
 
                                         Gtk.CellRendererText(), text=0))
99
 
            self._treeview.set_headers_visible(False)
 
101
            self._treeview.append_column(gtk.TreeViewColumn(_i18n('Conflicts'),
 
102
                                         gtk.CellRendererText(), text=0))
 
103
            self._treeview.set_headers_visible(False)            
100
104
            self.model.append([ _i18n("No conflicts in working tree.") ])
101
105
            self._button_diff3.set_sensitive(False)
102
106
        else:
103
 
            self.model = Gtk.ListStore(GObject.TYPE_STRING,
104
 
                                       GObject.TYPE_STRING,
105
 
                                       GObject.TYPE_STRING)
 
107
            self.model = gtk.ListStore(gobject.TYPE_STRING,
 
108
                                       gobject.TYPE_STRING,
 
109
                                       gobject.TYPE_STRING)
106
110
            self._treeview.set_model(self.model)
107
 
            self._treeview.append_column(Gtk.TreeViewColumn(_i18n('Path'),
108
 
                                         Gtk.CellRendererText(), text=0))
109
 
            self._treeview.append_column(Gtk.TreeViewColumn(_i18n('Type'),
110
 
                                         Gtk.CellRendererText(), text=1))
 
111
            self._treeview.append_column(gtk.TreeViewColumn(_i18n('Path'),
 
112
                                         gtk.CellRendererText(), text=0))
 
113
            self._treeview.append_column(gtk.TreeViewColumn(_i18n('Type'),
 
114
                                         gtk.CellRendererText(), text=1))
111
115
            self._treeview.set_search_column(0)
112
116
            for conflict in self.wt.conflicts():
113
117
                if conflict.typestring == 'path conflict':
130
134
                    t = _i18n("deleting parent")
131
135
                else:
132
136
                    t = _i18n("unknown type of conflict")
133
 
 
134
 
                self.model.append([ conflict.path, t, conflict.typestring ])
135
 
 
 
137
                
 
138
                self.model.append([ conflict.path, t, conflict.typestring ]) 
 
139
    
136
140
    def _get_selected_file(self):
137
141
        """ Return the selected conflict's filename. """
138
142
        treeselection = self._treeview.get_selection()
139
143
        (model, iter) = treeselection.get_selected()
140
 
 
 
144
        
141
145
        if iter is None:
142
146
            return None
143
147
        else:
144
148
            return model.get_value(iter, 0)
145
 
 
 
149
    
146
150
    def _get_selected_type(self):
147
151
        """ Return the type of the selected conflict. """
148
152
        treeselection = self._treeview.get_selection()
149
153
        (model, iter) = treeselection.get_selected()
150
 
 
 
154
        
151
155
        if iter is None:
152
156
            return None
153
157
        else:
154
158
            return model.get_value(iter, 2)
155
 
 
 
159
    
156
160
    def _on_diff3_clicked(self, widget):
157
161
        """ Launch external utility to resolve conflicts. """
158
162
        self._set_diff3(self._entry_diff3.get_text())