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

  • Committer: Daniel Schierbeck
  • Date: 2008-01-23 16:36:21 UTC
  • mto: (423.1.8 trunk)
  • mto: This revision was merged to the branch mainline in revision 429.
  • Revision ID: daniel.schierbeck@gmail.com-20080123163621-x8kublc38ojipnly
Made the revision popup menu correctly add tags.

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
 
import os.path
18
 
import re
19
 
 
20
17
try:
21
18
    import pygtk
22
19
    pygtk.require("2.0")
27
24
import gobject
28
25
import pango
29
26
 
 
27
import os.path
 
28
import re
 
29
 
30
30
from bzrlib import errors, osutils
31
31
from bzrlib.trace import mutter
32
32
from bzrlib.util import bencode
33
33
 
34
 
from bzrlib.plugins.gtk import _i18n
35
 
from bzrlib.plugins.gtk.dialog import question_dialog
36
 
from bzrlib.plugins.gtk.errors import show_bzr_error
 
34
from dialog import error_dialog, question_dialog
 
35
from errors import show_bzr_error
37
36
 
38
37
try:
39
38
    import dbus
105
104
                                  parent=parent,
106
105
                                  flags=0,
107
106
                                  buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
 
107
        self._question_dialog = question_dialog
108
108
 
109
109
        self._wt = wt
110
110
        # TODO: Do something with this value, it is used by Olive
164
164
        store = self._files_store
165
165
        self._treeview_files.set_model(None)
166
166
 
167
 
        added = _i18n('added')
168
 
        removed = _i18n('removed')
169
 
        renamed = _i18n('renamed')
170
 
        renamed_and_modified = _i18n('renamed and modified')
171
 
        modified = _i18n('modified')
172
 
        kind_changed = _i18n('kind changed')
 
167
        added = _('added')
 
168
        removed = _('removed')
 
169
        renamed = _('renamed')
 
170
        renamed_and_modified = _('renamed and modified')
 
171
        modified = _('modified')
 
172
        kind_changed = _('kind changed')
173
173
 
174
174
        # The store holds:
175
175
        # [file_id, real path, checkbox, display path, changes type, message]
176
 
        # iter_changes returns:
 
176
        # _iter_changes returns:
177
177
        # (file_id, (path_in_source, path_in_target),
178
178
        #  changed_content, versioned, parent, name, kind,
179
179
        #  executable)
186
186
        self._wt.lock_read()
187
187
        self._basis_tree.lock_read()
188
188
        try:
189
 
            from diff import iter_changes_to_status
 
189
            from diff import _iter_changes_to_status
190
190
            for (file_id, real_path, change_type, display_path
191
 
                ) in iter_changes_to_status(self._basis_tree, self._wt):
 
191
                ) in _iter_changes_to_status(self._basis_tree, self._wt):
192
192
                if self._selected and real_path != self._selected:
193
193
                    enabled = False
194
194
                else:
227
227
            return
228
228
        if have_dbus:
229
229
            bus = dbus.SystemBus()
230
 
            try:
231
 
                proxy_obj = bus.get_object('org.freedesktop.NetworkManager',
232
 
                                           '/org/freedesktop/NetworkManager')
233
 
            except dbus.DBusException:
234
 
                mutter("networkmanager not available.")
235
 
                self._check_local.show()
236
 
                return
237
 
            
 
230
            proxy_obj = bus.get_object('org.freedesktop.NetworkManager',
 
231
                                       '/org/freedesktop/NetworkManager')
238
232
            dbus_iface = dbus.Interface(proxy_obj,
239
233
                                        'org.freedesktop.NetworkManager')
240
234
            try:
257
251
            self._enable_per_file_commits = True
258
252
        if not self._enable_per_file_commits:
259
253
            self._file_message_expander.hide()
260
 
            self._global_message_label.set_markup(_i18n('<b>Commit Message</b>'))
 
254
            self._global_message_label.set_markup(_('<b>Commit Message</b>'))
261
255
 
262
256
    def _compute_delta(self):
263
257
        self._delta = self._wt.changes_from(self._basis_tree)
302
296
                            gtk.gdk.CONTROL_MASK, 0, self._on_accel_next)
303
297
        self.add_accel_group(group)
304
298
 
305
 
        # ignore the escape key (avoid closing the window)
306
 
        self.connect_object('close', self.emit_stop_by_name, 'close')
307
 
 
308
299
    def _construct_left_pane(self):
309
300
        self._left_pane_box = gtk.VBox(homogeneous=False, spacing=5)
310
301
        self._construct_file_list()
311
302
        self._construct_pending_list()
312
303
 
313
 
        self._check_local = gtk.CheckButton(_i18n("_Only commit locally"),
 
304
        self._check_local = gtk.CheckButton(_("_Only commit locally"),
314
305
                                            use_underline=True)
315
306
        self._left_pane_box.pack_end(self._check_local, False, False)
316
307
        self._check_local.set_active(False)
337
328
        self._hpane.pack2(self._right_pane_table, resize=True, shrink=True)
338
329
 
339
330
    def _construct_action_pane(self):
340
 
        self._button_commit = gtk.Button(_i18n("Comm_it"), use_underline=True)
 
331
        self._button_commit = gtk.Button(_("Comm_it"), use_underline=True)
341
332
        self._button_commit.connect('clicked', self._on_commit_clicked)
342
333
        self._button_commit.set_flags(gtk.CAN_DEFAULT)
343
334
        self._button_commit.show()
363
354
 
364
355
    def _construct_file_list(self):
365
356
        self._files_box = gtk.VBox(homogeneous=False, spacing=0)
366
 
        file_label = gtk.Label(_i18n('Files'))
 
357
        file_label = gtk.Label(_('Files'))
367
358
        # file_label.show()
368
359
        self._files_box.pack_start(file_label, expand=False)
369
360
 
370
361
        self._commit_all_files_radio = gtk.RadioButton(
371
 
            None, _i18n("Commit all changes"))
 
362
            None, _("Commit all changes"))
372
363
        self._files_box.pack_start(self._commit_all_files_radio, expand=False)
373
364
        self._commit_all_files_radio.show()
374
365
        self._commit_all_files_radio.connect('toggled',
375
366
            self._toggle_commit_selection)
376
367
        self._commit_selected_radio = gtk.RadioButton(
377
 
            self._commit_all_files_radio, _i18n("Only commit selected changes"))
 
368
            self._commit_all_files_radio, _("Only commit selected changes"))
378
369
        self._files_box.pack_start(self._commit_selected_radio, expand=False)
379
370
        self._commit_selected_radio.show()
380
371
        self._commit_selected_radio.connect('toggled',
381
372
            self._toggle_commit_selection)
382
373
        if self._pending:
383
 
            self._commit_all_files_radio.set_label(_i18n('Commit all changes*'))
 
374
            self._commit_all_files_radio.set_label(_('Commit all changes*'))
384
375
            self._commit_all_files_radio.set_sensitive(False)
385
376
            self._commit_selected_radio.set_sensitive(False)
386
377
 
413
404
        crt.set_property('activatable', not bool(self._pending))
414
405
        crt.connect("toggled", self._toggle_commit, self._files_store)
415
406
        if self._pending:
416
 
            name = _i18n('Commit*')
 
407
            name = _('Commit*')
417
408
        else:
418
 
            name = _i18n('Commit')
 
409
            name = _('Commit')
419
410
        commit_col = gtk.TreeViewColumn(name, crt, active=2)
420
411
        commit_col.set_visible(False)
421
412
        self._treeview_files.append_column(commit_col)
422
 
        self._treeview_files.append_column(gtk.TreeViewColumn(_i18n('Path'),
 
413
        self._treeview_files.append_column(gtk.TreeViewColumn(_('Path'),
423
414
                                           gtk.CellRendererText(), text=3))
424
 
        self._treeview_files.append_column(gtk.TreeViewColumn(_i18n('Type'),
 
415
        self._treeview_files.append_column(gtk.TreeViewColumn(_('Type'),
425
416
                                           gtk.CellRendererText(), text=4))
426
417
        self._treeview_files.connect('cursor-changed',
427
418
                                     self._on_treeview_files_cursor_changed)
454
445
 
455
446
        pending_message = gtk.Label()
456
447
        pending_message.set_markup(
457
 
            _i18n('<i>* Cannot select specific files when merging</i>'))
 
448
            _('<i>* Cannot select specific files when merging</i>'))
458
449
        self._pending_box.pack_start(pending_message, expand=False, padding=5)
459
450
        pending_message.show()
460
451
 
461
 
        pending_label = gtk.Label(_i18n('Pending Revisions'))
 
452
        pending_label = gtk.Label(_('Pending Revisions'))
462
453
        self._pending_box.pack_start(pending_label, expand=False, padding=0)
463
454
        pending_label.show()
464
455
 
480
471
                                 )
481
472
        self._pending_store = liststore
482
473
        self._treeview_pending.set_model(liststore)
483
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Date'),
 
474
        self._treeview_pending.append_column(gtk.TreeViewColumn(_('Date'),
484
475
                                             gtk.CellRendererText(), text=1))
485
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Committer'),
 
476
        self._treeview_pending.append_column(gtk.TreeViewColumn(_('Committer'),
486
477
                                             gtk.CellRendererText(), text=2))
487
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Summary'),
 
478
        self._treeview_pending.append_column(gtk.TreeViewColumn(_('Summary'),
488
479
                                             gtk.CellRendererText(), text=3))
489
480
 
490
481
    def _construct_diff_view(self):
494
485
        #       decide that we really don't ever want to display it, we should
495
486
        #       actually remove it, and other references to it, along with the
496
487
        #       tests that it is set properly.
497
 
        self._diff_label = gtk.Label(_i18n('Diff for whole tree'))
 
488
        self._diff_label = gtk.Label(_('Diff for whole tree'))
498
489
        self._diff_label.set_alignment(0, 0)
499
490
        self._right_pane_table.set_row_spacing(self._right_pane_table_row, 0)
500
491
        self._add_to_right_table(self._diff_label, 1, False)
518
509
        self._file_message_text_view.set_accepts_tab(False)
519
510
        self._file_message_text_view.show()
520
511
 
521
 
        self._file_message_expander = gtk.Expander(_i18n('File commit message'))
 
512
        self._file_message_expander = gtk.Expander(_('File commit message'))
522
513
        self._file_message_expander.set_expanded(True)
523
514
        self._file_message_expander.add(scroller)
524
515
        self._add_to_right_table(self._file_message_expander, 1, False)
525
516
        self._file_message_expander.show()
526
517
 
527
518
    def _construct_global_message(self):
528
 
        self._global_message_label = gtk.Label(_i18n('Global Commit Message'))
529
 
        self._global_message_label.set_markup(
530
 
            _i18n('<b>Global Commit Message</b>'))
 
519
        self._global_message_label = gtk.Label(_('Global Commit Message'))
 
520
        self._global_message_label.set_markup(_('<b>Global Commit Message</b>'))
531
521
        self._global_message_label.set_alignment(0, 0)
532
522
        self._right_pane_table.set_row_spacing(self._right_pane_table_row, 0)
533
523
        self._add_to_right_table(self._global_message_label, 1, False)
553
543
 
554
544
        if selection is not None:
555
545
            path, display_path = model.get(selection, 1, 3)
556
 
            self._diff_label.set_text(_i18n('Diff for ') + display_path)
 
546
            self._diff_label.set_text(_('Diff for ') + display_path)
557
547
            if path is None:
558
548
                self._diff_view.show_diff(None)
559
549
            else:
600
590
        text_buffer = self._file_message_text_view.get_buffer()
601
591
        file_id, display_path, message = self._files_store.get(selection, 0, 3, 5)
602
592
        if file_id is None: # Whole tree
603
 
            self._file_message_expander.set_label(_i18n('File commit message'))
 
593
            self._file_message_expander.set_label(_('File commit message'))
604
594
            self._file_message_expander.set_expanded(False)
605
595
            self._file_message_expander.set_sensitive(False)
606
596
            text_buffer.set_text('')
607
597
            self._last_selected_file = None
608
598
        else:
609
 
            self._file_message_expander.set_label(_i18n('Commit message for ')
 
599
            self._file_message_expander.set_label(_('Commit message for ')
610
600
                                                  + display_path)
611
601
            self._file_message_expander.set_expanded(True)
612
602
            self._file_message_expander.set_sensitive(True)
650
640
        message = self._get_global_commit_message()
651
641
 
652
642
        if message == '':
653
 
            response = question_dialog(
654
 
                _i18n('Commit with an empty message?'),
655
 
                _i18n('You can describe your commit intent in the message.'),
656
 
                parent=self)
 
643
            response = self._question_dialog(
 
644
                            _('Commit with an empty message?'),
 
645
                            _('You can describe your commit intent in the message.'))
657
646
            if response == gtk.RESPONSE_NO:
658
647
                # Kindly give focus to message area
659
648
                self._global_message_text_view.grab_focus()
671
660
        #       entirely, since there isn't a way for them to add the unknown
672
661
        #       files at this point.
673
662
        for path in self._wt.unknowns():
674
 
            response = question_dialog(
675
 
                _i18n("Commit with unknowns?"),
676
 
                _i18n("Unknown files exist in the working tree. Commit anyway?"),
677
 
                parent=self)
678
 
                # Doesn't set a parent for the dialog..
 
663
            response = self._question_dialog(
 
664
                _("Commit with unknowns?"),
 
665
                _("Unknown files exist in the working tree. Commit anyway?"))
679
666
            if response == gtk.RESPONSE_NO:
680
667
                return
681
668
            break
692
679
                       specific_files=specific_files,
693
680
                       revprops=revprops)
694
681
        except errors.PointlessCommit:
695
 
            response = question_dialog(
696
 
                _i18n('Commit with no changes?'),
697
 
                _i18n('There are no changes in the working tree.'
698
 
                      ' Do you want to commit anyway?'),
699
 
                parent=self)
 
682
            response = self._question_dialog(
 
683
                                _('Commit with no changes?'),
 
684
                                _('There are no changes in the working tree.'
 
685
                                  ' Do you want to commit anyway?'))
700
686
            if response == gtk.RESPONSE_YES:
701
687
                rev_id = self._wt.commit(message,
702
688
                               allow_pointless=True,