/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: Jelmer Vernooij
  • Date: 2008-03-28 19:26:53 UTC
  • mto: (450.1.13 trunk)
  • mto: This revision was merged to the branch mainline in revision 458.
  • Revision ID: jelmer@samba.org-20080328192653-trzptkwahx1tulz9
Add module for preferences code.

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
101
100
    """Implementation of Commit."""
102
101
 
103
102
    def __init__(self, wt, selected=None, parent=None):
104
 
        gtk.Dialog.__init__(self, title="Commit to %s" % wt.basedir,
 
103
        gtk.Dialog.__init__(self, title="Commit - Olive",
105
104
                                  parent=parent,
106
105
                                  flags=0,
107
 
                                  buttons=(gtk.STOCK_CANCEL,
108
 
                                           gtk.RESPONSE_CANCEL))
 
106
                                  buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
109
107
        self._question_dialog = question_dialog
110
108
 
111
109
        self._wt = wt
166
164
        store = self._files_store
167
165
        self._treeview_files.set_model(None)
168
166
 
169
 
        added = _i18n('added')
170
 
        removed = _i18n('removed')
171
 
        renamed = _i18n('renamed')
172
 
        renamed_and_modified = _i18n('renamed and modified')
173
 
        modified = _i18n('modified')
174
 
        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')
175
173
 
176
174
        # The store holds:
177
175
        # [file_id, real path, checkbox, display path, changes type, message]
259
257
            self._enable_per_file_commits = True
260
258
        if not self._enable_per_file_commits:
261
259
            self._file_message_expander.hide()
262
 
            self._global_message_label.set_markup(_i18n('<b>Commit Message</b>'))
 
260
            self._global_message_label.set_markup(_('<b>Commit Message</b>'))
263
261
 
264
262
    def _compute_delta(self):
265
263
        self._delta = self._wt.changes_from(self._basis_tree)
304
302
                            gtk.gdk.CONTROL_MASK, 0, self._on_accel_next)
305
303
        self.add_accel_group(group)
306
304
 
307
 
        # ignore the escape key (avoid closing the window)
308
 
        self.connect_object('close', self.emit_stop_by_name, 'close')
309
 
 
310
305
    def _construct_left_pane(self):
311
306
        self._left_pane_box = gtk.VBox(homogeneous=False, spacing=5)
312
307
        self._construct_file_list()
313
308
        self._construct_pending_list()
314
309
 
315
 
        self._check_local = gtk.CheckButton(_i18n("_Only commit locally"),
 
310
        self._check_local = gtk.CheckButton(_("_Only commit locally"),
316
311
                                            use_underline=True)
317
312
        self._left_pane_box.pack_end(self._check_local, False, False)
318
313
        self._check_local.set_active(False)
339
334
        self._hpane.pack2(self._right_pane_table, resize=True, shrink=True)
340
335
 
341
336
    def _construct_action_pane(self):
342
 
        self._button_commit = gtk.Button(_i18n("Comm_it"), use_underline=True)
 
337
        self._button_commit = gtk.Button(_("Comm_it"), use_underline=True)
343
338
        self._button_commit.connect('clicked', self._on_commit_clicked)
344
339
        self._button_commit.set_flags(gtk.CAN_DEFAULT)
345
340
        self._button_commit.show()
365
360
 
366
361
    def _construct_file_list(self):
367
362
        self._files_box = gtk.VBox(homogeneous=False, spacing=0)
368
 
        file_label = gtk.Label(_i18n('Files'))
 
363
        file_label = gtk.Label(_('Files'))
369
364
        # file_label.show()
370
365
        self._files_box.pack_start(file_label, expand=False)
371
366
 
372
367
        self._commit_all_files_radio = gtk.RadioButton(
373
 
            None, _i18n("Commit all changes"))
 
368
            None, _("Commit all changes"))
374
369
        self._files_box.pack_start(self._commit_all_files_radio, expand=False)
375
370
        self._commit_all_files_radio.show()
376
371
        self._commit_all_files_radio.connect('toggled',
377
372
            self._toggle_commit_selection)
378
373
        self._commit_selected_radio = gtk.RadioButton(
379
 
            self._commit_all_files_radio, _i18n("Only commit selected changes"))
 
374
            self._commit_all_files_radio, _("Only commit selected changes"))
380
375
        self._files_box.pack_start(self._commit_selected_radio, expand=False)
381
376
        self._commit_selected_radio.show()
382
377
        self._commit_selected_radio.connect('toggled',
383
378
            self._toggle_commit_selection)
384
379
        if self._pending:
385
 
            self._commit_all_files_radio.set_label(_i18n('Commit all changes*'))
 
380
            self._commit_all_files_radio.set_label(_('Commit all changes*'))
386
381
            self._commit_all_files_radio.set_sensitive(False)
387
382
            self._commit_selected_radio.set_sensitive(False)
388
383
 
415
410
        crt.set_property('activatable', not bool(self._pending))
416
411
        crt.connect("toggled", self._toggle_commit, self._files_store)
417
412
        if self._pending:
418
 
            name = _i18n('Commit*')
 
413
            name = _('Commit*')
419
414
        else:
420
 
            name = _i18n('Commit')
 
415
            name = _('Commit')
421
416
        commit_col = gtk.TreeViewColumn(name, crt, active=2)
422
417
        commit_col.set_visible(False)
423
418
        self._treeview_files.append_column(commit_col)
424
 
        self._treeview_files.append_column(gtk.TreeViewColumn(_i18n('Path'),
 
419
        self._treeview_files.append_column(gtk.TreeViewColumn(_('Path'),
425
420
                                           gtk.CellRendererText(), text=3))
426
 
        self._treeview_files.append_column(gtk.TreeViewColumn(_i18n('Type'),
 
421
        self._treeview_files.append_column(gtk.TreeViewColumn(_('Type'),
427
422
                                           gtk.CellRendererText(), text=4))
428
423
        self._treeview_files.connect('cursor-changed',
429
424
                                     self._on_treeview_files_cursor_changed)
456
451
 
457
452
        pending_message = gtk.Label()
458
453
        pending_message.set_markup(
459
 
            _i18n('<i>* Cannot select specific files when merging</i>'))
 
454
            _('<i>* Cannot select specific files when merging</i>'))
460
455
        self._pending_box.pack_start(pending_message, expand=False, padding=5)
461
456
        pending_message.show()
462
457
 
463
 
        pending_label = gtk.Label(_i18n('Pending Revisions'))
 
458
        pending_label = gtk.Label(_('Pending Revisions'))
464
459
        self._pending_box.pack_start(pending_label, expand=False, padding=0)
465
460
        pending_label.show()
466
461
 
482
477
                                 )
483
478
        self._pending_store = liststore
484
479
        self._treeview_pending.set_model(liststore)
485
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Date'),
 
480
        self._treeview_pending.append_column(gtk.TreeViewColumn(_('Date'),
486
481
                                             gtk.CellRendererText(), text=1))
487
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Committer'),
 
482
        self._treeview_pending.append_column(gtk.TreeViewColumn(_('Committer'),
488
483
                                             gtk.CellRendererText(), text=2))
489
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Summary'),
 
484
        self._treeview_pending.append_column(gtk.TreeViewColumn(_('Summary'),
490
485
                                             gtk.CellRendererText(), text=3))
491
486
 
492
487
    def _construct_diff_view(self):
496
491
        #       decide that we really don't ever want to display it, we should
497
492
        #       actually remove it, and other references to it, along with the
498
493
        #       tests that it is set properly.
499
 
        self._diff_label = gtk.Label(_i18n('Diff for whole tree'))
 
494
        self._diff_label = gtk.Label(_('Diff for whole tree'))
500
495
        self._diff_label.set_alignment(0, 0)
501
496
        self._right_pane_table.set_row_spacing(self._right_pane_table_row, 0)
502
497
        self._add_to_right_table(self._diff_label, 1, False)
520
515
        self._file_message_text_view.set_accepts_tab(False)
521
516
        self._file_message_text_view.show()
522
517
 
523
 
        self._file_message_expander = gtk.Expander(_i18n('File commit message'))
 
518
        self._file_message_expander = gtk.Expander(_('File commit message'))
524
519
        self._file_message_expander.set_expanded(True)
525
520
        self._file_message_expander.add(scroller)
526
521
        self._add_to_right_table(self._file_message_expander, 1, False)
527
522
        self._file_message_expander.show()
528
523
 
529
524
    def _construct_global_message(self):
530
 
        self._global_message_label = gtk.Label(_i18n('Global Commit Message'))
531
 
        self._global_message_label.set_markup(
532
 
            _i18n('<b>Global Commit Message</b>'))
 
525
        self._global_message_label = gtk.Label(_('Global Commit Message'))
 
526
        self._global_message_label.set_markup(_('<b>Global Commit Message</b>'))
533
527
        self._global_message_label.set_alignment(0, 0)
534
528
        self._right_pane_table.set_row_spacing(self._right_pane_table_row, 0)
535
529
        self._add_to_right_table(self._global_message_label, 1, False)
555
549
 
556
550
        if selection is not None:
557
551
            path, display_path = model.get(selection, 1, 3)
558
 
            self._diff_label.set_text(_i18n('Diff for ') + display_path)
 
552
            self._diff_label.set_text(_('Diff for ') + display_path)
559
553
            if path is None:
560
554
                self._diff_view.show_diff(None)
561
555
            else:
602
596
        text_buffer = self._file_message_text_view.get_buffer()
603
597
        file_id, display_path, message = self._files_store.get(selection, 0, 3, 5)
604
598
        if file_id is None: # Whole tree
605
 
            self._file_message_expander.set_label(_i18n('File commit message'))
 
599
            self._file_message_expander.set_label(_('File commit message'))
606
600
            self._file_message_expander.set_expanded(False)
607
601
            self._file_message_expander.set_sensitive(False)
608
602
            text_buffer.set_text('')
609
603
            self._last_selected_file = None
610
604
        else:
611
 
            self._file_message_expander.set_label(_i18n('Commit message for ')
 
605
            self._file_message_expander.set_label(_('Commit message for ')
612
606
                                                  + display_path)
613
607
            self._file_message_expander.set_expanded(True)
614
608
            self._file_message_expander.set_sensitive(True)
653
647
 
654
648
        if message == '':
655
649
            response = self._question_dialog(
656
 
                _i18n('Commit with an empty message?'),
657
 
                _i18n('You can describe your commit intent in the message.'),
658
 
                parent=self)
 
650
                            _('Commit with an empty message?'),
 
651
                            _('You can describe your commit intent in the message.'))
659
652
            if response == gtk.RESPONSE_NO:
660
653
                # Kindly give focus to message area
661
654
                self._global_message_text_view.grab_focus()
674
667
        #       files at this point.
675
668
        for path in self._wt.unknowns():
676
669
            response = self._question_dialog(
677
 
                _i18n("Commit with unknowns?"),
678
 
                _i18n("Unknown files exist in the working tree. Commit anyway?"),
679
 
                parent=self)
680
 
                # Doesn't set a parent for the dialog..
 
670
                _("Commit with unknowns?"),
 
671
                _("Unknown files exist in the working tree. Commit anyway?"))
681
672
            if response == gtk.RESPONSE_NO:
682
673
                return
683
674
            break
695
686
                       revprops=revprops)
696
687
        except errors.PointlessCommit:
697
688
            response = self._question_dialog(
698
 
                _i18n('Commit with no changes?'),
699
 
                _i18n('There are no changes in the working tree.'
700
 
                      ' Do you want to commit anyway?'),
701
 
                parent=self)
 
689
                                _('Commit with no changes?'),
 
690
                                _('There are no changes in the working tree.'
 
691
                                  ' Do you want to commit anyway?'))
702
692
            if response == gtk.RESPONSE_YES:
703
693
                rev_id = self._wt.commit(message,
704
694
                               allow_pointless=True,