/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: 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:
22
22
except:
23
23
    pass
24
24
 
25
 
import gtk
26
 
import gobject
27
 
import pango
 
25
from gi.repository import Gtk
 
26
from gi.repository import GObject
 
27
from gi.repository import Pango
28
28
 
29
29
from bzrlib import (
30
30
    errors,
109
109
    return fixed_newline.decode('utf-8')
110
110
 
111
111
 
112
 
class CommitDialog(gtk.Dialog):
 
112
class CommitDialog(Gtk.Dialog):
113
113
    """Implementation of Commit."""
114
114
 
115
115
    def __init__(self, wt, selected=None, parent=None):
116
 
        gtk.Dialog.__init__(self, title="Commit to %s" % wt.basedir,
 
116
        GObject.GObject.__init__(self, title="Commit to %s" % wt.basedir,
117
117
                            parent=parent, flags=0,)
118
118
        self.connect('delete-event', self._on_delete_window)
119
119
        self._question_dialog = question_dialog
120
120
 
121
 
        self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_NORMAL)
 
121
        self.set_type_hint(Gdk.WindowTypeHint.NORMAL)
122
122
 
123
123
        self._wt = wt
124
124
        # TODO: Do something with this value, it is used by Olive
286
286
        """Build up the dialog widgets."""
287
287
        # The primary pane which splits it into left and right (adjustable)
288
288
        # sections.
289
 
        self._hpane = gtk.HPaned()
 
289
        self._hpane = Gtk.HPaned()
290
290
 
291
291
        self._construct_left_pane()
292
292
        self._construct_right_pane()
293
293
        self._construct_action_pane()
294
294
 
295
 
        self.vbox.pack_start(self._hpane)
 
295
        self.vbox.pack_start(self._hpane, True, True, 0)
296
296
        self._hpane.show()
297
297
        self.set_focus(self._global_message_text_view)
298
298
 
317
317
        self._hpane.set_position(300)
318
318
 
319
319
    def _construct_accelerators(self):
320
 
        group = gtk.AccelGroup()
321
 
        group.connect_group(gtk.gdk.keyval_from_name('N'),
322
 
                            gtk.gdk.CONTROL_MASK, 0, self._on_accel_next)
 
320
        group = Gtk.AccelGroup()
 
321
        group.connect_group(Gdk.keyval_from_name('N'),
 
322
                            Gdk.EventMask.CONTROL_MASK, 0, self._on_accel_next)
323
323
        self.add_accel_group(group)
324
324
 
325
325
        # ignore the escape key (avoid closing the window)
326
326
        self.connect_object('close', self.emit_stop_by_name, 'close')
327
327
 
328
328
    def _construct_left_pane(self):
329
 
        self._left_pane_box = gtk.VBox(homogeneous=False, spacing=5)
 
329
        self._left_pane_box = Gtk.VBox(homogeneous=False, spacing=5)
330
330
        self._construct_file_list()
331
331
        self._construct_pending_list()
332
332
 
333
 
        self._check_local = gtk.CheckButton(_i18n("_Only commit locally"),
 
333
        self._check_local = Gtk.CheckButton(_i18n("_Only commit locally"),
334
334
                                            use_underline=True)
335
335
        self._left_pane_box.pack_end(self._check_local, False, False)
336
336
        self._check_local.set_active(False)
345
345
        # commit, and 1 for file commit, and it looked good. But I don't seem
346
346
        # to have a way to do that with the gtk boxes... :( (Which is extra
347
347
        # weird since wx uses gtk on Linux...)
348
 
        self._right_pane_table = gtk.Table(rows=10, columns=1, homogeneous=False)
 
348
        self._right_pane_table = Gtk.Table(rows=10, columns=1, homogeneous=False)
349
349
        self._right_pane_table.set_row_spacings(5)
350
350
        self._right_pane_table.set_col_spacings(5)
351
351
        self._right_pane_table_row = 0
357
357
        self._hpane.pack2(self._right_pane_table, resize=True, shrink=True)
358
358
 
359
359
    def _construct_action_pane(self):
360
 
        self._button_cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
 
360
        self._button_cancel = Gtk.Button(stock=Gtk.STOCK_CANCEL)
361
361
        self._button_cancel.connect('clicked', self._on_cancel_clicked)
362
362
        self._button_cancel.show()
363
363
        self.action_area.pack_end(self._button_cancel)
364
 
        self._button_commit = gtk.Button(_i18n("Comm_it"), use_underline=True)
 
364
        self._button_commit = Gtk.Button(_i18n("Comm_it"), use_underline=True)
365
365
        self._button_commit.connect('clicked', self._on_commit_clicked)
366
 
        self._button_commit.set_flags(gtk.CAN_DEFAULT)
 
366
        self._button_commit.set_can_default(True)
367
367
        self._button_commit.show()
368
368
        self.action_area.pack_end(self._button_commit)
369
369
        self._button_commit.grab_default()
377
377
        """
378
378
        end_row = self._right_pane_table_row + weight
379
379
        options = 0
380
 
        expand_opts = gtk.EXPAND | gtk.FILL | gtk.SHRINK
 
380
        expand_opts = Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL | Gtk.AttachOptions.SHRINK
381
381
        if expanding:
382
382
            options = expand_opts
383
383
        self._right_pane_table.attach(widget, 0, 1,
386
386
        self._right_pane_table_row = end_row
387
387
 
388
388
    def _construct_file_list(self):
389
 
        self._files_box = gtk.VBox(homogeneous=False, spacing=0)
390
 
        file_label = gtk.Label(_i18n('Files'))
 
389
        self._files_box = Gtk.VBox(homogeneous=False, spacing=0)
 
390
        file_label = Gtk.Label(label=_i18n('Files'))
391
391
        # file_label.show()
392
 
        self._files_box.pack_start(file_label, expand=False)
 
392
        self._files_box.pack_start(file_label, False, True, 0)
393
393
 
394
 
        self._commit_all_files_radio = gtk.RadioButton(
 
394
        self._commit_all_files_radio = Gtk.RadioButton(
395
395
            None, _i18n("Commit all changes"))
396
 
        self._files_box.pack_start(self._commit_all_files_radio, expand=False)
 
396
        self._files_box.pack_start(self._commit_all_files_radio, False, True, 0)
397
397
        self._commit_all_files_radio.show()
398
398
        self._commit_all_files_radio.connect('toggled',
399
399
            self._toggle_commit_selection)
400
 
        self._commit_selected_radio = gtk.RadioButton(
 
400
        self._commit_selected_radio = Gtk.RadioButton(
401
401
            self._commit_all_files_radio, _i18n("Only commit selected changes"))
402
 
        self._files_box.pack_start(self._commit_selected_radio, expand=False)
 
402
        self._files_box.pack_start(self._commit_selected_radio, False, True, 0)
403
403
        self._commit_selected_radio.show()
404
404
        self._commit_selected_radio.connect('toggled',
405
405
            self._toggle_commit_selection)
408
408
            self._commit_all_files_radio.set_sensitive(False)
409
409
            self._commit_selected_radio.set_sensitive(False)
410
410
 
411
 
        scroller = gtk.ScrolledWindow()
412
 
        scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
413
 
        self._treeview_files = gtk.TreeView()
 
411
        scroller = Gtk.ScrolledWindow()
 
412
        scroller.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
 
413
        self._treeview_files = Gtk.TreeView()
414
414
        self._treeview_files.show()
415
415
        scroller.add(self._treeview_files)
416
 
        scroller.set_shadow_type(gtk.SHADOW_IN)
 
416
        scroller.set_shadow_type(Gtk.ShadowType.IN)
417
417
        scroller.show()
418
418
        self._files_box.pack_start(scroller,
419
419
                                   expand=True, fill=True)
420
420
        self._files_box.show()
421
 
        self._left_pane_box.pack_start(self._files_box)
 
421
        self._left_pane_box.pack_start(self._files_box, True, True, 0)
422
422
 
423
423
        # Keep note that all strings stored in a ListStore must be UTF-8
424
424
        # strings. GTK does not support directly setting and restoring Unicode
425
425
        # objects.
426
 
        liststore = gtk.ListStore(
427
 
            gobject.TYPE_STRING,  # [0] file_id
428
 
            gobject.TYPE_STRING,  # [1] real path
429
 
            gobject.TYPE_BOOLEAN, # [2] checkbox
430
 
            gobject.TYPE_STRING,  # [3] display path
431
 
            gobject.TYPE_STRING,  # [4] changes type
432
 
            gobject.TYPE_STRING,  # [5] commit message
 
426
        liststore = Gtk.ListStore(
 
427
            GObject.TYPE_STRING,  # [0] file_id
 
428
            GObject.TYPE_STRING,  # [1] real path
 
429
            GObject.TYPE_BOOLEAN, # [2] checkbox
 
430
            GObject.TYPE_STRING,  # [3] display path
 
431
            GObject.TYPE_STRING,  # [4] changes type
 
432
            GObject.TYPE_STRING,  # [5] commit message
433
433
            )
434
434
        self._files_store = liststore
435
435
        self._treeview_files.set_model(liststore)
436
 
        crt = gtk.CellRendererToggle()
 
436
        crt = Gtk.CellRendererToggle()
437
437
        crt.set_property('activatable', not bool(self._pending))
438
438
        crt.connect("toggled", self._toggle_commit, self._files_store)
439
439
        if self._pending:
440
440
            name = _i18n('Commit*')
441
441
        else:
442
442
            name = _i18n('Commit')
443
 
        commit_col = gtk.TreeViewColumn(name, crt, active=2)
 
443
        commit_col = Gtk.TreeViewColumn(name, crt, active=2)
444
444
        commit_col.set_visible(False)
445
445
        self._treeview_files.append_column(commit_col)
446
 
        self._treeview_files.append_column(gtk.TreeViewColumn(_i18n('Path'),
447
 
                                           gtk.CellRendererText(), text=3))
448
 
        self._treeview_files.append_column(gtk.TreeViewColumn(_i18n('Type'),
449
 
                                           gtk.CellRendererText(), text=4))
 
446
        self._treeview_files.append_column(Gtk.TreeViewColumn(_i18n('Path'),
 
447
                                           Gtk.CellRendererText(), text=3))
 
448
        self._treeview_files.append_column(Gtk.TreeViewColumn(_i18n('Type'),
 
449
                                           Gtk.CellRendererText(), text=4))
450
450
        self._treeview_files.connect('cursor-changed',
451
451
                                     self._on_treeview_files_cursor_changed)
452
452
 
473
473
    def _construct_pending_list(self):
474
474
        # Pending information defaults to hidden, we put it all in 1 box, so
475
475
        # that we can show/hide all of them at once
476
 
        self._pending_box = gtk.VBox()
 
476
        self._pending_box = Gtk.VBox()
477
477
        self._pending_box.hide()
478
478
 
479
 
        pending_message = gtk.Label()
 
479
        pending_message = Gtk.Label()
480
480
        pending_message.set_markup(
481
481
            _i18n('<i>* Cannot select specific files when merging</i>'))
482
482
        self._pending_box.pack_start(pending_message, expand=False, padding=5)
483
483
        pending_message.show()
484
484
 
485
 
        pending_label = gtk.Label(_i18n('Pending Revisions'))
 
485
        pending_label = Gtk.Label(label=_i18n('Pending Revisions'))
486
486
        self._pending_box.pack_start(pending_label, expand=False, padding=0)
487
487
        pending_label.show()
488
488
 
489
 
        scroller = gtk.ScrolledWindow()
490
 
        scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
491
 
        self._treeview_pending = gtk.TreeView()
 
489
        scroller = Gtk.ScrolledWindow()
 
490
        scroller.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
 
491
        self._treeview_pending = Gtk.TreeView()
492
492
        scroller.add(self._treeview_pending)
493
 
        scroller.set_shadow_type(gtk.SHADOW_IN)
 
493
        scroller.set_shadow_type(Gtk.ShadowType.IN)
494
494
        scroller.show()
495
495
        self._pending_box.pack_start(scroller,
496
496
                                     expand=True, fill=True, padding=5)
497
497
        self._treeview_pending.show()
498
 
        self._left_pane_box.pack_start(self._pending_box)
 
498
        self._left_pane_box.pack_start(self._pending_box, True, True, 0)
499
499
 
500
 
        liststore = gtk.ListStore(gobject.TYPE_STRING, # revision_id
501
 
                                  gobject.TYPE_STRING, # date
502
 
                                  gobject.TYPE_STRING, # committer
503
 
                                  gobject.TYPE_STRING, # summary
 
500
        liststore = Gtk.ListStore(GObject.TYPE_STRING, # revision_id
 
501
                                  GObject.TYPE_STRING, # date
 
502
                                  GObject.TYPE_STRING, # committer
 
503
                                  GObject.TYPE_STRING, # summary
504
504
                                 )
505
505
        self._pending_store = liststore
506
506
        self._treeview_pending.set_model(liststore)
507
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Date'),
508
 
                                             gtk.CellRendererText(), text=1))
509
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Committer'),
510
 
                                             gtk.CellRendererText(), text=2))
511
 
        self._treeview_pending.append_column(gtk.TreeViewColumn(_i18n('Summary'),
512
 
                                             gtk.CellRendererText(), text=3))
 
507
        self._treeview_pending.append_column(Gtk.TreeViewColumn(_i18n('Date'),
 
508
                                             Gtk.CellRendererText(), text=1))
 
509
        self._treeview_pending.append_column(Gtk.TreeViewColumn(_i18n('Committer'),
 
510
                                             Gtk.CellRendererText(), text=2))
 
511
        self._treeview_pending.append_column(Gtk.TreeViewColumn(_i18n('Summary'),
 
512
                                             Gtk.CellRendererText(), text=3))
513
513
 
514
514
    def _construct_diff_view(self):
515
515
        from bzrlib.plugins.gtk.diff import DiffView
518
518
        #       decide that we really don't ever want to display it, we should
519
519
        #       actually remove it, and other references to it, along with the
520
520
        #       tests that it is set properly.
521
 
        self._diff_label = gtk.Label(_i18n('Diff for whole tree'))
 
521
        self._diff_label = Gtk.Label(label=_i18n('Diff for whole tree'))
522
522
        self._diff_label.set_alignment(0, 0)
523
523
        self._right_pane_table.set_row_spacing(self._right_pane_table_row, 0)
524
524
        self._add_to_right_table(self._diff_label, 1, False)
529
529
        self._diff_view.show()
530
530
 
531
531
    def _construct_file_message(self):
532
 
        scroller = gtk.ScrolledWindow()
533
 
        scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
532
        scroller = Gtk.ScrolledWindow()
 
533
        scroller.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
534
534
 
535
 
        self._file_message_text_view = gtk.TextView()
 
535
        self._file_message_text_view = Gtk.TextView()
536
536
        scroller.add(self._file_message_text_view)
537
 
        scroller.set_shadow_type(gtk.SHADOW_IN)
 
537
        scroller.set_shadow_type(Gtk.ShadowType.IN)
538
538
        scroller.show()
539
539
 
540
 
        self._file_message_text_view.modify_font(pango.FontDescription("Monospace"))
541
 
        self._file_message_text_view.set_wrap_mode(gtk.WRAP_WORD)
 
540
        self._file_message_text_view.modify_font(Pango.FontDescription("Monospace"))
 
541
        self._file_message_text_view.set_wrap_mode(Gtk.WrapMode.WORD)
542
542
        self._file_message_text_view.set_accepts_tab(False)
543
543
        self._file_message_text_view.show()
544
544
 
545
 
        self._file_message_expander = gtk.Expander(_i18n('File commit message'))
 
545
        self._file_message_expander = Gtk.Expander(_i18n('File commit message'))
546
546
        self._file_message_expander.set_expanded(True)
547
547
        self._file_message_expander.add(scroller)
548
548
        self._add_to_right_table(self._file_message_expander, 1, False)
549
549
        self._file_message_expander.show()
550
550
 
551
551
    def _construct_global_message(self):
552
 
        self._global_message_label = gtk.Label(_i18n('Global Commit Message'))
 
552
        self._global_message_label = Gtk.Label(label=_i18n('Global Commit Message'))
553
553
        self._global_message_label.set_markup(
554
554
            _i18n('<b>Global Commit Message</b>'))
555
555
        self._global_message_label.set_alignment(0, 0)
558
558
        # Can we remove the spacing between the label and the box?
559
559
        self._global_message_label.show()
560
560
 
561
 
        scroller = gtk.ScrolledWindow()
562
 
        scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
561
        scroller = Gtk.ScrolledWindow()
 
562
        scroller.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
563
563
 
564
 
        self._global_message_text_view = gtk.TextView()
 
564
        self._global_message_text_view = Gtk.TextView()
565
565
        self._set_global_commit_message(self._saved_commit_messages_manager.get()[0])
566
 
        self._global_message_text_view.modify_font(pango.FontDescription("Monospace"))
 
566
        self._global_message_text_view.modify_font(Pango.FontDescription("Monospace"))
567
567
        scroller.add(self._global_message_text_view)
568
 
        scroller.set_shadow_type(gtk.SHADOW_IN)
 
568
        scroller.set_shadow_type(Gtk.ShadowType.IN)
569
569
        scroller.show()
570
570
        self._add_to_right_table(scroller, 2, True)
571
 
        self._file_message_text_view.set_wrap_mode(gtk.WRAP_WORD)
 
571
        self._file_message_text_view.set_wrap_mode(Gtk.WrapMode.WORD)
572
572
        self._file_message_text_view.set_accepts_tab(False)
573
573
        self._global_message_text_view.show()
574
574
 
689
689
                _i18n('Commit cancelled'),
690
690
                _i18n('Do you want to save your commit messages ?'),
691
691
                parent=self)
692
 
            if response == gtk.RESPONSE_NO:
 
692
            if response == Gtk.ResponseType.NO:
693
693
                 # save nothing and destroy old comments if any
694
694
                mgr = SavedCommitMessagesManager()
695
695
        mgr.save(self._wt, self._wt.branch)
696
 
        self.response(gtk.RESPONSE_CANCEL) # close window
 
696
        self.response(Gtk.ResponseType.CANCEL) # close window
697
697
 
698
698
    @show_bzr_error
699
699
    def _on_commit_clicked(self, button):
708
708
                _i18n('Commit with an empty message?'),
709
709
                _i18n('You can describe your commit intent in the message.'),
710
710
                parent=self)
711
 
            if response == gtk.RESPONSE_NO:
 
711
            if response == Gtk.ResponseType.NO:
712
712
                # Kindly give focus to message area
713
713
                self._global_message_text_view.grab_focus()
714
714
                return
730
730
                _i18n("Unknown files exist in the working tree. Commit anyway?"),
731
731
                parent=self)
732
732
                # Doesn't set a parent for the dialog..
733
 
            if response == gtk.RESPONSE_NO:
 
733
            if response == Gtk.ResponseType.NO:
734
734
                return
735
735
            break
736
736
 
751
751
                _i18n('There are no changes in the working tree.'
752
752
                      ' Do you want to commit anyway?'),
753
753
                parent=self)
754
 
            if response == gtk.RESPONSE_YES:
 
754
            if response == Gtk.ResponseType.YES:
755
755
                rev_id = self._wt.commit(message,
756
756
                               allow_pointless=True,
757
757
                               strict=False,
761
761
        self.committed_revision_id = rev_id
762
762
        # destroy old comments if any
763
763
        SavedCommitMessagesManager().save(self._wt, self._wt.branch)
764
 
        self.response(gtk.RESPONSE_OK)
 
764
        self.response(Gtk.ResponseType.OK)
765
765
 
766
766
    def _get_global_commit_message(self):
767
767
        buf = self._global_message_text_view.get_buffer()