/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
2
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
7
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
12
#
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
try:
18
    import pygtk
19
    pygtk.require("2.0")
20
except:
21
    pass
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
22
0.13.11 by Jelmer Vernooij
Bunch of small fixes, cleanups and simplifications.
23
import gtk
24
import gtk.glade
25
import gobject
26
import pango
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
27
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
28
import bzrlib.errors as errors
93.1.10 by Alexander Belchenko
- Show file kind marker with path (i.e. directory path ends with '/')
29
from bzrlib import osutils
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
30
66.3.1 by v.ladeuil+lp at free
Fix #73737. Check empty message at commit time.
31
from dialog import error_dialog, question_dialog
93.1.12 by Alexander Belchenko
Names XML files with GUI resources obtained via olive/guifiles.py
32
from guifiles import GLADEFILENAME
93.1.6 by Alexander Belchenko
detecting name of glade file doing in separate module (olive.gladefile)
33
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
34
89 by Jelmer Vernooij
Rename OliveBranch -> BranchDialog.
35
class CommitDialog:
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
36
    """ Display Commit dialog and perform the needed actions. """
93.1.17 by Alexander Belchenko
gcommit reworked again.
37
    def __init__(self, wt, wtpath, notbranch):
93.1.7 by Alexander Belchenko
Fix gcommit bug 66937 (bzr still running after cancel/commit clicked)
38
        """ Initialize the Commit dialog.
91.1.9 by Jelmer Vernooij
Use epydoc style (for consistency with Bazaar).
39
        :param  wt:         bzr working tree object
40
        :param  wtpath:     path to working tree root
91.1.11 by Jelmer Vernooij
Cherrypick Alexanders' fix for #68127.
41
        :param  notbranch:  flag that path is not a brach
42
        :type   notbranch:  bool
93.1.7 by Alexander Belchenko
Fix gcommit bug 66937 (bzr still running after cancel/commit clicked)
43
        """
93.1.6 by Alexander Belchenko
detecting name of glade file doing in separate module (olive.gladefile)
44
        self.glade = gtk.glade.XML(GLADEFILENAME, 'window_commit', 'olive-gtk')
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
45
        
0.13.1 by Jelmer Vernooij
Remove communicator use from Commit.
46
        self.wt = wt
47
        self.wtpath = wtpath
93.1.17 by Alexander Belchenko
gcommit reworked again.
48
        self.notbranch = notbranch
93.1.7 by Alexander Belchenko
Fix gcommit bug 66937 (bzr still running after cancel/commit clicked)
49
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
50
        # Get some important widgets
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
51
        self.window = self.glade.get_widget('window_commit')
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
52
        self.checkbutton_local = self.glade.get_widget('checkbutton_commit_local')
53
        self.textview = self.glade.get_widget('textview_commit')
115 by Szilveszter Farkas (Phanatic)
Reworked Commit dialog to fix bug #73778.
54
        self.file_expander = self.glade.get_widget('expander_commit_select')
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
55
        self.file_view = self.glade.get_widget('treeview_commit_select')
115 by Szilveszter Farkas (Phanatic)
Reworked Commit dialog to fix bug #73778.
56
        self.pending_expander = self.glade.get_widget('expander_commit_pending')
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
57
        self.pending_label = self.glade.get_widget('label_commit_pending')
58
        self.pending_view = self.glade.get_widget('treeview_commit_pending')
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
59
93.1.17 by Alexander Belchenko
gcommit reworked again.
60
        if wt is None or notbranch:
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
61
            return
62
        
63
        # Set the delta
64
        self.old_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision())
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
65
        self.delta = self.wt.changes_from(self.old_tree)
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
66
        
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
67
        # Get pending merges
68
        self.pending = self._pending_merges(self.wt)
69
        
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
70
        # Dictionary for signal_autoconnect
71
        dic = { "on_button_commit_commit_clicked": self.commit,
72
                "on_button_commit_cancel_clicked": self.close }
93.1.7 by Alexander Belchenko
Fix gcommit bug 66937 (bzr still running after cancel/commit clicked)
73
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
74
        # Connect the signals to the handlers
75
        self.glade.signal_autoconnect(dic)
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
76
        
77
        # Create the file list
78
        self._create_file_view()
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
79
        # Create the pending merges
80
        self._create_pending_merges()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
81
    
82
    def display(self):
93.1.17 by Alexander Belchenko
gcommit reworked again.
83
        """ Display the Push dialog.
84
        @return:    True if dialog is shown.
85
        """
86
        if self.wt is None and not self.notbranch:
87
            error_dialog(_('Directory does not have a working tree'),
88
                         _('Operation aborted.'))
89
            self.close()
90
            return False
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
91
        if self.notbranch:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
92
            error_dialog(_('Directory is not a branch'),
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
93
                         _('You can perform this action only in a branch.'))
0.8.46 by Szilveszter Farkas (Phanatic)
Modified OliveDialog class interface; huge cleanups.
94
            self.close()
93.1.17 by Alexander Belchenko
gcommit reworked again.
95
            return False
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
96
        else:
0.13.1 by Jelmer Vernooij
Remove communicator use from Commit.
97
            if self.wt.branch.get_bound_location() is not None:
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
98
                # we have a checkout, so the local commit checkbox must appear
99
                self.checkbutton_local.show()
100
            
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
101
            if self.pending:
102
                # There are pending merges, file selection not supported
115 by Szilveszter Farkas (Phanatic)
Reworked Commit dialog to fix bug #73778.
103
                self.file_expander.set_expanded(False)
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
104
                self.file_view.set_sensitive(False)
105
            else:
106
                # No pending merges
115 by Szilveszter Farkas (Phanatic)
Reworked Commit dialog to fix bug #73778.
107
                self.pending_expander.hide()
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
108
            
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
109
            self.textview.modify_font(pango.FontDescription("Monospace"))
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
110
            self.window.show()
93.1.17 by Alexander Belchenko
gcommit reworked again.
111
            return True
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
112
    
113
    def _create_file_view(self):
93.1.13 by Alexander Belchenko
Fix bug introduced by revid:bialix@ukr.net-20061025102040-90bcdbad341ee3fa
114
        self.file_store = gtk.ListStore(gobject.TYPE_BOOLEAN,   # [0] checkbox
115
                                        gobject.TYPE_STRING,    # [1] path to display
116
                                        gobject.TYPE_STRING,    # [2] changes type
117
                                        gobject.TYPE_STRING)    # [3] real path
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
118
        self.file_view.set_model(self.file_store)
119
        crt = gtk.CellRendererToggle()
120
        crt.set_property("activatable", True)
121
        crt.connect("toggled", self._toggle_commit, self.file_store)
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
122
        self.file_view.append_column(gtk.TreeViewColumn(_('Commit'),
0.8.21 by Szilveszter Farkas (Phanatic)
2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
123
                                     crt, active=0))
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
124
        self.file_view.append_column(gtk.TreeViewColumn(_('Path'),
0.8.21 by Szilveszter Farkas (Phanatic)
2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
125
                                     gtk.CellRendererText(), text=1))
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
126
        self.file_view.append_column(gtk.TreeViewColumn(_('Type'),
0.8.21 by Szilveszter Farkas (Phanatic)
2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
127
                                     gtk.CellRendererText(), text=2))
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
128
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
129
        for path, id, kind in self.delta.added:
93.1.10 by Alexander Belchenko
- Show file kind marker with path (i.e. directory path ends with '/')
130
            marker = osutils.kind_marker(kind)
93.1.13 by Alexander Belchenko
Fix bug introduced by revid:bialix@ukr.net-20061025102040-90bcdbad341ee3fa
131
            self.file_store.append([ True, path+marker, _('added'), path ])
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
132
133
        for path, id, kind in self.delta.removed:
93.1.10 by Alexander Belchenko
- Show file kind marker with path (i.e. directory path ends with '/')
134
            marker = osutils.kind_marker(kind)
93.1.13 by Alexander Belchenko
Fix bug introduced by revid:bialix@ukr.net-20061025102040-90bcdbad341ee3fa
135
            self.file_store.append([ True, path+marker, _('removed'), path ])
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
136
137
        for oldpath, newpath, id, kind, text_modified, meta_modified in self.delta.renamed:
93.1.10 by Alexander Belchenko
- Show file kind marker with path (i.e. directory path ends with '/')
138
            marker = osutils.kind_marker(kind)
93.1.13 by Alexander Belchenko
Fix bug introduced by revid:bialix@ukr.net-20061025102040-90bcdbad341ee3fa
139
            if text_modified or meta_modified:
140
                changes = _('renamed and modified')
141
            else:
142
                changes = _('renamed')
93.1.10 by Alexander Belchenko
- Show file kind marker with path (i.e. directory path ends with '/')
143
            self.file_store.append([ True,
144
                                     oldpath+marker + '  =>  ' + newpath+marker,
93.1.13 by Alexander Belchenko
Fix bug introduced by revid:bialix@ukr.net-20061025102040-90bcdbad341ee3fa
145
                                     changes,
146
                                     newpath
147
                                   ])
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
148
149
        for path, id, kind, text_modified, meta_modified in self.delta.modified:
93.1.10 by Alexander Belchenko
- Show file kind marker with path (i.e. directory path ends with '/')
150
            marker = osutils.kind_marker(kind)
93.1.13 by Alexander Belchenko
Fix bug introduced by revid:bialix@ukr.net-20061025102040-90bcdbad341ee3fa
151
            self.file_store.append([ True, path+marker, _('modified'), path ])
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
152
    
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
153
    def _create_pending_merges(self):
93.1.19 by Alexander Belchenko
If there is no pending merge on commit then don't show empty pending merge part in commit dialog.
154
        if not self.pending:
155
            # hide unused pending merge part
156
            scrolled_window = self.glade.get_widget('scrolledwindow_commit_pending')
157
            parent = scrolled_window.get_parent()
158
            parent.remove(scrolled_window)
159
            parent = self.pending_label.get_parent()
160
            parent.remove(self.pending_label)
161
            return
162
        
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
163
        liststore = gtk.ListStore(gobject.TYPE_STRING,
164
                                  gobject.TYPE_STRING,
165
                                  gobject.TYPE_STRING)
166
        self.pending_view.set_model(liststore)
167
        
168
        self.pending_view.append_column(gtk.TreeViewColumn(_('Date'),
169
                                        gtk.CellRendererText(), text=0))
170
        self.pending_view.append_column(gtk.TreeViewColumn(_('Committer'),
171
                                        gtk.CellRendererText(), text=1))
172
        self.pending_view.append_column(gtk.TreeViewColumn(_('Summary'),
173
                                        gtk.CellRendererText(), text=2))
174
        
175
        for item in self.pending:
176
            liststore.append([ item['date'],
177
                               item['committer'],
178
                               item['summary'] ])
179
    
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
180
    def _get_specific_files(self):
181
        ret = []
182
        it = self.file_store.get_iter_first()
183
        while it:
184
            if self.file_store.get_value(it, 0):
93.1.13 by Alexander Belchenko
Fix bug introduced by revid:bialix@ukr.net-20061025102040-90bcdbad341ee3fa
185
                # get real path from hidden column 3
186
                ret.append(self.file_store.get_value(it, 3))
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
187
            it = self.file_store.iter_next(it)
188
189
        return ret
190
    
191
    def _toggle_commit(self, cell, path, model):
192
        model[path][0] = not model[path][0]
193
        return
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
194
    
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
195
    def _pending_merges(self, wt):
196
        """ Return a list of pending merges or None if there are none of them. """
197
        parents = wt.get_parent_ids()
198
        if len(parents) < 2:
199
            return None
200
        
201
        import re
202
        from bzrlib.osutils import format_date
203
        
204
        pending = parents[1:]
205
        branch = wt.branch
206
        last_revision = parents[0]
207
        
208
        if last_revision is not None:
209
            try:
210
                ignore = set(branch.repository.get_ancestry(last_revision))
211
            except errors.NoSuchRevision:
212
                # the last revision is a ghost : assume everything is new 
213
                # except for it
214
                ignore = set([None, last_revision])
215
        else:
216
            ignore = set([None])
217
        
218
        pm = []
219
        for merge in pending:
220
            ignore.add(merge)
221
            try:
222
                m_revision = branch.repository.get_revision(merge)
223
                
224
                rev = {}
225
                rev['committer'] = re.sub('<.*@.*>', '', m_revision.committer).strip(' ')
226
                rev['summary'] = m_revision.get_summary()
227
                rev['date'] = format_date(m_revision.timestamp,
228
                                          m_revision.timezone or 0, 
229
                                          'original', date_fmt="%Y-%m-%d",
230
                                          show_offset=False)
231
                
232
                pm.append(rev)
233
                
234
                inner_merges = branch.repository.get_ancestry(merge)
235
                assert inner_merges[0] is None
236
                inner_merges.pop(0)
237
                inner_merges.reverse()
238
                for mmerge in inner_merges:
239
                    if mmerge in ignore:
240
                        continue
241
                    mm_revision = branch.repository.get_revision(mmerge)
242
                    
243
                    rev = {}
244
                    rev['committer'] = re.sub('<.*@.*>', '', mm_revision.committer).strip(' ')
245
                    rev['summary'] = mm_revision.get_summary()
246
                    rev['date'] = format_date(mm_revision.timestamp,
247
                                              mm_revision.timezone or 0, 
248
                                              'original', date_fmt="%Y-%m-%d",
249
                                              show_offset=False)
250
                
251
                    pm.append(rev)
252
                    
253
                    ignore.add(mmerge)
254
            except errors.NoSuchRevision:
255
                print "DEBUG: NoSuchRevision:", merge
256
        
257
        return pm
258
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
259
    def commit(self, widget):
0.8.26 by Szilveszter Farkas (Phanatic)
Implemented Diff window; added menu.py (was missing from last commit)
260
        textbuffer = self.textview.get_buffer()
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
261
        start, end = textbuffer.get_bounds()
93.1.9 by Alexander Belchenko
Fix bug 67927 (non-ascii commit message saved as utf-8 string)
262
        message = textbuffer.get_text(start, end).decode('utf-8')
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
263
        
264
        checkbutton_strict = self.glade.get_widget('checkbutton_commit_strict')
265
        checkbutton_force = self.glade.get_widget('checkbutton_commit_force')
266
        
95 by Szilveszter Farkas (Phanatic)
Added pending merges to Commit dialog. Fixed bug #66091.
267
        if not self.pending:
268
            specific_files = self._get_specific_files()
269
        else:
270
            specific_files = None
66.3.1 by v.ladeuil+lp at free
Fix #73737. Check empty message at commit time.
271
272
        if message == '':
273
            response = question_dialog('Commit with an empty message ?',
274
                                       'You can describe your commit intent'
275
                                       +' in the message')
276
            if response == gtk.RESPONSE_NO:
277
                # Kindly give focus to message area
278
                self.textview.grab_focus()
279
                return
280
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
281
        try:
66.3.1 by v.ladeuil+lp at free
Fix #73737. Check empty message at commit time.
282
            self.wt.commit(message,
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
283
                           allow_pointless=checkbutton_force.get_active(),
284
                           strict=checkbutton_strict.get_active(),
0.8.23 by Szilveszter Farkas (Phanatic)
Visual feedback when Olive is busy; follow bzr API changes; commit dialog update
285
                           local=self.checkbutton_local.get_active(),
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
286
                           specific_files=specific_files)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
287
        except errors.NotBranchError:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
288
            error_dialog(_('Directory is not a branch'),
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
289
                         _('You can perform this action only in a branch.'))
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
290
            return
291
        except errors.LocalRequiresBoundBranch:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
292
            error_dialog(_('Directory is not a checkout'),
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
293
                         _('You can perform local commit only on checkouts.'))
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
294
            return
295
        except errors.PointlessCommit:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
296
            error_dialog(_('No changes to commit'),
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
297
                         _('Try force commit if you want to commit anyway.'))
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
298
            return
299
        except errors.ConflictsInTree:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
300
            error_dialog(_('Conflicts in tree'),
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
301
                         _('You need to resolve the conflicts before committing.'))
0.8.20 by Szilveszter Farkas (Phanatic)
2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
302
            return
303
        except errors.StrictCommitFailed:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
304
            error_dialog(_('Strict commit failed'),
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
305
                         _('There are unknown files in the working tree.\nPlease add or delete them.'))
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
306
            return
307
        except errors.BoundBranchOutOfDate, errmsg:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
308
            error_dialog(_('Bound branch is out of date'),
0.8.98 by Szilveszter Farkas (Phanatic)
Loads of fixes. Pyflakes cleanup.
309
                         _('%s') % errmsg)
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
310
            return
0.13.2 by Jelmer Vernooij
Handle unknown errors in commit.
311
        except errors.BzrError, msg:
0.13.4 by Jelmer Vernooij
Handle non-bzr unknown errors as well.
312
            error_dialog(_('Unknown bzr error'), str(msg))
313
            return
314
        except Exception, msg:
0.13.3 by Jelmer Vernooij
Start removing dialog context (it's not required).
315
            error_dialog(_('Unknown error'), str(msg))
0.13.2 by Jelmer Vernooij
Handle unknown errors in commit.
316
            return
93.1.7 by Alexander Belchenko
Fix gcommit bug 66937 (bzr still running after cancel/commit clicked)
317
93.1.17 by Alexander Belchenko
gcommit reworked again.
318
        self.close()
319
0.8.19 by Szilveszter Farkas (Phanatic)
2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com>
320
    def close(self, widget=None):
321
        self.window.destroy()